在点击事件中隐藏父div [英] hide the parent div on click event
问题描述
我有列表透视列表项博客,Case_Studies,白皮书与各自的class.on点击列表项目它显示在'.page-perspective'各自的元素ie.If我点击博客它只显示博客和隐藏其他。如果我点击白皮书,它只会显示白皮书并隐藏其他人。在白皮书中,我有四个'.page-perspective'。我只显示白皮书,博客和案例研究的前三个元素。
我想隐藏'.view-row',但现在我隐藏了代码中提到的包装部分。
$ b
(function($){function perspective_type(){$(。perspective-list a)。click(function(e){e.preventDefault(); $( .perspective-list a)。parent()。removeClass('active'); $('。wrapper .page-perspective')。slice(0,3).show(); var href = $(this)。 ATT r('href'); $('。wrapper> :not(。'+ href +')')。hide(); $('。wrapper>。'+ href +'').slice(0,3).show(); $(本).parent()addClass(激活)。 }); $(。perspective-list a)。mouseover(function(){$(。perspective-list a)。removeClass('hover'); $(this).parent()。addClass('hover') ;}); $(。perspective-list a)。mouseout(function(){$(。perspective-list a)。each(function(){$(this).parent()。removeClass('hover'); });}); $('#perspectives .perspectiveReadurl','#page_perspectives .perspectiveReadurl')。find('a')。attr('target','_blank'); } jQuery(document).ready(function($){$('。Whitepapers')。slice(0,4).show(); perspective_type();});})(jQuery)
.views-row {height:50px; border:1px solid red;} < script src = https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js\"></script><div id =page_perspectives> < div class =view view-page-perspectives view-id-page_perspectives> < div class =perspective-list> < ul class =nav nav-justified> < li class => < a class =博客href =博客>博客< / a> < /锂> <李> < a class =Case_Studieshref =Case_Studies>案例研究< / a> < /锂> < li class =active> < a class =Whitepapershref =Whitepapers>白皮书< / a> < /锂> < / UL> < / DIV> < div class =view-content> < div class =views-row views-row-1 views-row-odd views-row-first> < div class =wrapper> < div class =page-perspective row Whitepapersstyle =display:none;>白皮书1< / div> < / DIV> < / DIV> < div class =views-row views-row-2 views-row-even> < div class =wrapper> < div class =page-perspective row Blogsstyle =display:none;>博客1< / div> < / DIV> < / DIV> < div class =views-row views-row-3 views-row-odd> < div class =wrapper> < div class =page-perspective row Whitepapersstyle =display:none;>白皮书2< / div> < / DIV> < / DIV> < div class =views-row views-row-4 views-row-even> < div class =wrapper> < div class =page-perspective row Case_Studiesstyle =display:none;>案例研究1< / div> < / DIV> < / DIV> < div class =views-row views-row-5 views-row-odd> < div class =wrapper> < div class =page-perspective row Blogsstyle =display:none;>博客2< / div> < / DIV> < / DIV> < div class =views-row views-row-6 views-row-even> < div class =wrapper> < div class =page-perspective row Whitepapersstyle =display:none;>白皮书3< / div> < / DIV> < / DIV> < div class =views-row views-row-7 views-row-odd views-row-last> < div class =wrapper> < div class =page-perspective row Whitepapersstyle =display:none;>白皮书4< / div> < / DIV> < / DIV> < / DIV> < / div>< / div>
views-row
部分有一定的高度,所以你想隐藏 views-row
部分,而不是内部元素部分。为此,您必须执行以下操作。- 加载时删除内部元素的所有默认样式属性。
- 现在它变为可见的所有元素,因此隐藏所有
views-row
元素。 - 根据您的要求,切分
Whitepapers
部分,并找到它是父母views-row
的相应父项并显示出来。 - 在点击每个链接后,您必须找到父项的父项以及显示/隐藏元素。
我已经在下面的代码片段中实现了上述步骤。
( function($){function perspective_type(){$(。perspective-list a)。click(function(e){e.preventDefault(); $(。perspective-list a)。parent()。removeClass ( '有效'); //$('.wrapper .page-perspective')。slice(0,3).show(); / *不确定这一行正在做什么。不需要这个。* / var href = $(this).attr('href'); $('。wrapper>:not(。'+ href +')')。parent()。parent()。hide(); $('。wrapper>。'+ href +'').slice(0,3).parent()。parent()。show(); $(本).parent()addClass(激活)。 }); $(。perspective-list a)。mouseover(function(){$(。perspective-list a)。removeClass('hover'); $(this).parent()。addClass('hover') ;}); $(。perspective-list a)。mouseout(function(){$(。perspective-list a)。each(function(){$(this).parent()。removeClass('hover'); });}); $('#perspectives .perspectiveReadurl','#page_perspectives .perspectiveReadurl')。find('a')。attr('target','_blank'); jQuery(document).ready(function($){$('。wrapper .page-perspective')。removeAttr('style'); $('。views-row')。hide(); $('。 ()).parent()。parent()。show(); perspective_type();});})(jQuery)
< pre class =snippet-code-css lang-css prettyprint-override> .views-row {height:50px; border:1px solid red;}
< script src =https://ajax.googleapis.com/ajax/libs/jquery/2.1 .1 / jquery.min.js>< / script>< div id =page_perspectives> < div class =view view-page-perspectives view-id-page_perspectives> < div class =perspective-list> < ul class =nav nav-justified> < li class => < a class =博客href =博客>博客< / a> < /锂> <李> < a class =Case_Studieshref =Case_Studies>案例研究< / a> < /锂> < li class =active> < a class =Whitepapershref =Whitepapers>白皮书< / a> < /锂> < / UL> < / DIV> < div class =view-content> < div class =views-row views-row-1 views-row-odd views-row-first> < div class =wrapper> < div class =page-perspective row Whitepapersstyle =display:none;>白皮书1< / div> < / DIV> < / DIV> < div class =views-row views-row-2 views-row-even> < div class =wrapper> < div class =page-perspective row Blogsstyle =display:none;>博客1< / div> < / DIV> < / DIV> < div class =views-row views-row-3 views-row-odd> < div class =wrapper> < div class =page-perspective row Whitepapersstyle =display:none;>白皮书2< / div> < / DIV> < / DIV> < div class =views-row views-row-4 views-row-even> < div class =wrapper> < div class =page-perspective row Case_Studiesstyle =display:none;>案例研究1< / div> < / DIV> < / DIV> < div class =views-row views-row-5 views-row-odd> < div class =wrapper> < div class =page-perspective row Blogsstyle =display:none;>博客2< / div> < / DIV> < / DIV> < div class =views-row views-row-6 views-row-even> < div class =wrapper> < div class =page-perspective row Whitepapersstyle =display:none;>白皮书3< / div> < / DIV> < / DIV> < div class =views-row views-row-7 views-row-odd views-row-last> < div class =wrapper> < div class =page-perspective row Whitepapersstyle =display:none;>白皮书4< / div> < / DIV> < / DIV> < / DIV> < / div>< / div>
这里 是小提琴版本。
I have the list perspective-list item Blogs,Case_Studies,Whitepapers with respective class.on click the list item it show the respective element in '.page-perspective' ie.If I click blogs it shows only blogs and hide other.If I click whitepapers it shows only whitepapers and hide others.In whitepapers I have four '.page-perspective'.I'm showing only first three element for whitepaper,blogs and casestudy.
I want to hide '.view-row' but now I'm hiding wrapper section mentioned in code.
(function($) {
function perspective_type() {
$(".perspective-list a").click(function(e) {
e.preventDefault();
$(".perspective-list a").parent().removeClass('active');
$('.wrapper .page-perspective').slice(0,3).show();
var href = $(this).attr('href');
$('.wrapper > :not(.' + href + ')').hide();
$('.wrapper > .' + href + '').slice(0,3).show();
$(this).parent().addClass('active');
});
$(".perspective-list a").mouseover(
function() {
$(".perspective-list a").removeClass('hover');
$(this).parent().addClass('hover');
});
$(".perspective-list a").mouseout(
function() {
$(".perspective-list a").each(function() {
$(this).parent().removeClass('hover');
});
});
$('#perspectives .perspectiveReadurl', '#page_perspectives .perspectiveReadurl').find('a').attr('target', '_blank');
}
jQuery(document).ready(function($) {
$('.Whitepapers').slice(0,4).show();
perspective_type();
});
})(jQuery)
.views-row{
height:50px;
border:1px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="page_perspectives">
<div class="view view-page-perspectives view-id-page_perspectives">
<div class="perspective-list">
<ul class="nav nav-justified">
<li class="">
<a class="Blogs" href="Blogs">Blogs</a>
</li>
<li>
<a class="Case_Studies" href="Case_Studies">Case Studies</a>
</li>
<li class="active">
<a class="Whitepapers" href="Whitepapers">Whitepapers</a>
</li>
</ul>
</div>
<div class="view-content">
<div class="views-row views-row-1 views-row-odd views-row-first">
<div class="wrapper">
<div class="page-perspective row Whitepapers" style="display: none;">
Whitepaper 1
</div>
</div>
</div>
<div class="views-row views-row-2 views-row-even">
<div class="wrapper">
<div class="page-perspective row Blogs" style="display: none;">
Blogs 1
</div>
</div>
</div>
<div class="views-row views-row-3 views-row-odd">
<div class="wrapper">
<div class="page-perspective row Whitepapers" style="display: none;">
Whitepaper 2
</div>
</div>
</div>
<div class="views-row views-row-4 views-row-even">
<div class="wrapper">
<div class="page-perspective row Case_Studies" style="display: none;">
Case study 1
</div>
</div>
</div>
<div class="views-row views-row-5 views-row-odd">
<div class="wrapper">
<div class="page-perspective row Blogs" style="display: none;">
Blogs 2
</div>
</div>
</div>
<div class="views-row views-row-6 views-row-even">
<div class="wrapper">
<div class="page-perspective row Whitepapers" style="display: none;">
Whitepaper 3
</div>
</div>
</div>
<div class="views-row views-row-7 views-row-odd views-row-last">
<div class="wrapper">
<div class="page-perspective row Whitepapers" style="display: none;">
Whitepaper 4
</div>
</div>
</div>
</div>
</div>
</div>
As you mentioned that all codes are coming dynamically and you have some height for the views-row
section, so you want to hide views-row
section instead of inside element section. For this you have to do the following.
- When it is loading remove all the default style attribute for the inner elements.
- Now it becomes all the elements is visible, so hide all the
views-row
element. - As per your requirement, slice the
Whitepapers
section and find it is respective parent of parentviews-row
and show it up. - After clicking each link, you have to find the parent of parent and show/hide element.
I have implemented the above steps in the following Snippet.
(function($) {
function perspective_type() {
$(".perspective-list a").click(function(e) {
e.preventDefault();
$(".perspective-list a").parent().removeClass('active');
//$('.wrapper .page-perspective').slice(0,3).show(); /*Not sure what this line is doing. no need of this.*/
var href = $(this).attr('href');
$('.wrapper > :not(.' + href + ')').parent().parent().hide();
$('.wrapper > .' + href + '').slice(0,3).parent().parent().show();
$(this).parent().addClass('active');
});
$(".perspective-list a").mouseover(
function() {
$(".perspective-list a").removeClass('hover');
$(this).parent().addClass('hover');
});
$(".perspective-list a").mouseout(
function() {
$(".perspective-list a").each(function() {
$(this).parent().removeClass('hover');
});
});
$('#perspectives .perspectiveReadurl', '#page_perspectives .perspectiveReadurl').find('a').attr('target', '_blank');
}
jQuery(document).ready(function($) {
$('.wrapper .page-perspective').removeAttr('style');
$('.views-row').hide();
$('.Whitepapers').slice(0,4).parent().parent().show();
perspective_type();
});
})(jQuery)
.views-row{
height:50px;
border:1px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="page_perspectives">
<div class="view view-page-perspectives view-id-page_perspectives">
<div class="perspective-list">
<ul class="nav nav-justified">
<li class="">
<a class="Blogs" href="Blogs">Blogs</a>
</li>
<li>
<a class="Case_Studies" href="Case_Studies">Case Studies</a>
</li>
<li class="active">
<a class="Whitepapers" href="Whitepapers">Whitepapers</a>
</li>
</ul>
</div>
<div class="view-content">
<div class="views-row views-row-1 views-row-odd views-row-first">
<div class="wrapper">
<div class="page-perspective row Whitepapers" style="display: none;">
Whitepaper 1
</div>
</div>
</div>
<div class="views-row views-row-2 views-row-even">
<div class="wrapper">
<div class="page-perspective row Blogs" style="display: none;">
Blogs 1
</div>
</div>
</div>
<div class="views-row views-row-3 views-row-odd">
<div class="wrapper">
<div class="page-perspective row Whitepapers" style="display: none;">
Whitepaper 2
</div>
</div>
</div>
<div class="views-row views-row-4 views-row-even">
<div class="wrapper">
<div class="page-perspective row Case_Studies" style="display: none;">
Case study 1
</div>
</div>
</div>
<div class="views-row views-row-5 views-row-odd">
<div class="wrapper">
<div class="page-perspective row Blogs" style="display: none;">
Blogs 2
</div>
</div>
</div>
<div class="views-row views-row-6 views-row-even">
<div class="wrapper">
<div class="page-perspective row Whitepapers" style="display: none;">
Whitepaper 3
</div>
</div>
</div>
<div class="views-row views-row-7 views-row-odd views-row-last">
<div class="wrapper">
<div class="page-perspective row Whitepapers" style="display: none;">
Whitepaper 4
</div>
</div>
</div>
</div>
</div>
</div>
Here is the fiddle version.
这篇关于在点击事件中隐藏父div的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!