我想要隐藏ul
的所有孩子,只有div
具有特定的孩子
类。我希望在点击包含课程h4
的锚标记时隐藏除li
之外的所有li
个元素,其中包含div
类header4
。我的观点有一个ul
,内部有foreach
li
循环。
<ul id="itemContainer" class="posts">
@foreach (var item in Model) {
<li class="first">
<div class="date">
</div>
if (condition) {
<div class="gallery-container arrow header1">
</div>
} if (condition) {
<div class="gallery-container arrow header2">
</div>
} if (condition) {
<div class="gallery-container arrow header3">
</div>
} if (condition) {
<div class="gallery-container arrow header4">
</div>
}
</li>
}
</ul>
<li><a href="javascript:void(0);" class="h4">click</a></li>
<script>
$(document).ready(function() {
$('.h4').click(function() {
alert("1");
$("#itemContainer").children().hide();
$('.header4').show();
})
});
</script>
答案 0 :(得分:1)
试试这个
$('#itemContainer').children(':not(.header4)').hide();
或
$('#itemContainer .header4').siblings().hide();
答案 1 :(得分:0)
你的主要错误是children()
方法中的拼写错误。我也建议使用jQuery .not()
而不是隐藏所有并显示'header4' - 这种方法可以避免闪烁
$(document).ready(function() {
$('.h4').click(function() {
alert("1");
$("#itemContainer").children().not('.header4').hide();
});
});
*{
margin: 0; padding: 0;
}
li {
display: block;
border: 1px solid red;
}
a{
display: inline-block;
border-radius: 5px;
background: #AAA;
color: white;
text-decoration: none;
margin: 5px 0;
padding: 5px;
text-transform: uppercase;
font-family: Verdana;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="itemContainer">
<li class="header1">1</li>
<li class="header2">2</li>
<li class="header3">3</li>
<li class="header4">4</li>
</ul>
<a href="javascript:void(0);" class="h4">click</a>
答案 2 :(得分:0)
首先,您的代码中存在许多语法问题。
您可以在children
和li
所有ul
但hide
中找到所有div
header4
,如下所示,
$(document).ready(function() {
$('.h4').click(function() {
$("#itemContainer").children().each(function() {
$(this).find('div:not(.header4)').hide();
});
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="itemContainer" class="posts">
<li class="first">
<div class="date">
</div>
<div class="gallery-container arrow header1">header1
</div>
<div class="gallery-container arrow header2">header2
</div>
<div class="gallery-container arrow header3">header3
</div>
<div class="gallery-container arrow header4">header4
</div>
</li>
<li class="second">
<div class="date">
</div>
<div class="gallery-container arrow header1">header1
</div>
<div class="gallery-container arrow header2">header2
</div>
<div class="gallery-container arrow header3">header3
</div>
<div class="gallery-container arrow header4">header4
</div>
</li>
</ul>
<li><a href="javascript:void(0);" class="h4">click</a>
</li>
答案 3 :(得分:0)
您可以使用如下的jQuery
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="itemContainer" class="posts">
<li class="first">
<div class="date">
</div>
<div class="gallery-container arrow header1">header1
</div>
<div class="gallery-container arrow header2">header2
</div>
<div class="gallery-container arrow header3">header3
</div>
<div class="gallery-container arrow header4">header4
</div>
</li>
</ul>
<a href="javascript:void(0);" class="h4">click</a>
<script>
$(document).ready(function () {
$('.h4').click(function () {
$("#itemContainer li .arrow").hide();
$("#itemContainer li .arrow.header4").show();
});
});
</script>