在HTML结构中,我们经常需要处理嵌套的列表元素(ul-li)。有时需要根据子元素的存在与否来操作父元素。
:has()
选择器$('li:has(ul)').hide();
这会选择所有包含ul
元素的li
元素并将其隐藏。
.has()
方法$('li').has('ul').hide();
这与方法1效果相同,但使用了不同的语法。
.children()
检查$('li').each(function() {
if ($(this).children('ul').length > 0) {
$(this).hide();
}
});
这种方法更显式地检查每个li
元素是否包含ul
子元素。
.show()
或.toggle()
方法<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<ul id="myList">
<li>Item 1</li>
<li>Item 2
<ul>
<li>Subitem 1</li>
<li>Subitem 2</li>
</ul>
</li>
<li>Item 3</li>
<li>Item 4
<ul>
<li>Subitem 3</li>
</ul>
</li>
</ul>
<script>
$(document).ready(function() {
// 隐藏所有包含子ul的li元素
$('#myList li:has(ul)').hide();
// 或者使用.has()方法
// $('#myList li').has('ul').hide();
});
</script>
</body>
</html>
在这个示例中,包含子列表的"Item 2"和"Item 4"会被隐藏,而其他项保持可见。