我有一个包含内容的 Div
<div id="dv">
<ul><li><a class="html">abcd</a></li></ul>
<ul><li><a class="bold">cdef</a></li></ul>
<ul><li><a class="bold">xyz</a></li></ul>
</div>
我想动态显示第二个和第三个 ul。我怎样才能做到这一点 ?
我有一个包含内容的 Div
<div id="dv">
<ul><li><a class="html">abcd</a></li></ul>
<ul><li><a class="bold">cdef</a></li></ul>
<ul><li><a class="bold">xyz</a></li></ul>
</div>
我想动态显示第二个和第三个 ul。我怎样才能做到这一点 ?
您可以找到 div 的所有子项,隐藏它们,然后找到ul
包含li
with 类"html"
并显示ul
:
$("#dv").children('ul').hide().find('li.html').closest('ul').show();
那是做什么的:
$("#dv")
- 找到相关的 div.children('ul')
- 找到它的子ul
元素.hide()
- 隐藏它们.find('a.html')
- 在那些s 中查找任何具有类的a
元素ul
"html"
.closest('ul')
- 获取ul
包含该a
元素.show()
- 显示它我能想到的最简单的是这个
$("#dv li a:not(.html)").parent().hide();
编辑:@ByScripts 建议使用closest()
而不是parent()
.
$("#dv li a:not(.html)").closest("ul").hide();
您可以在下面使用jQuery
$("#dv ul:nth-child(2),#dv ul:nth-child(3)").hide()
据我了解,您想删除<li>
with a
class 'html' 。下面是代码
$("#div ul li a.html").hide(function(){
$(this).parent().hide();
});
基于 xFortyFourx 答案:
$("#dv a:not(.html)").closest('ul').hide();
编辑:我认为很多参与者没有阅读标题。OP想要<ul>
根据元素隐藏class="html"
。不是解决方案;)<a>
slice()
这是你想要的吗?
$("#dv ul").hide(); // hide all divs
$("#dv a.html").closest("ul").show(); // show the div that contains a.html
如果您想显示除第一个 ul 之外的所有 ul,请尝试以下代码:
$("#dv ul").css('display','none');
if($("#dv ul").hasClass('html')){
$(".html").closest('ul').('display','block');
}
如果需要隐藏第二个和第三个,我建议使用sliceul
。
$('#dv ul').slice(1).hide();