Jquery 使用not()排除子项,但不起作用
我尝试使用Jquery 使用not()排除子项,但不起作用,jquery,Jquery,我尝试使用not()函数从选择器中排除子类,但它仍然选择子类。我知道我可以使用.parentClass>.childClass选择我想要的所有子类,但我有很多子类,只想排除一个子类 我这里有一个简单的例子(p标签不应该有黄色背景色): HTML: <li class='list'> <p class='pa'>test</p> <button class='btn'>click</button> </li> <
not()
函数从选择器中排除子类,但它仍然选择子类。我知道我可以使用.parentClass>.childClass
选择我想要的所有子类,但我有很多子类,只想排除一个子类
我这里有一个简单的例子(p
标签不应该有黄色背景色):
HTML:
<li class='list'>
<p class='pa'>test</p>
<button class='btn'>click</button>
</li>
<li class='list'>
<p class='pa'>test</p>
<button class='btn'>click</button>
</li>
JS:
或者,您可以使用它将过滤掉
.list
元素,该元素不包含类,也不包含其子元素。要检查子级,请使用jQuery伪类选择器
$(document).ready(function(){
$('.list:not(:has(.pa))').addClass('yellow');
})
$(文档).ready(函数(){
$('.list:not(:has(.pa))).addClass('yellow');
})
.yellow{
颜色:黄色
}
-
试验
点击
-
试验
点击
-
测试
点击
您可以使用.filter
筛选出包含子项的项目.pa
$(文档).ready(函数(){
$('.list').filter(函数(){
返回$('.pa',this).length==0;
}).addClass(“黄色”);
})
.yellow{
颜色:黄色
}
-
试验
点击
-
试验
点击
。不仅过滤当前选择。子节点不是当前选择的一部分。$('.list:not(.pa)
选择具有类list
但不具有类pa
的元素。它与孩子们无关。选择器不会做你认为它会做的事情。它表示“对于类列表中的所有元素,而不是类.pa中的所有元素,添加黄色类”。但是,您的pa
元素是列表
元素的子元素,因此:not
什么都不做。您的最终目标是什么?根据当前的代码和解释,如果只针对没有.pa子级的列表项,则没有列表项会获得黄色类。我想你想让css影响父母而不是孩子?那是。。。jquery无法帮助您,css也无法帮助您。因此,我希望选择一个包含多个子类的父类,但有一个子类我不希望它包含在此选择中。
$(document).ready(function(){
$('.list:not(.pa)').addClass('yellow');
})
$(document).ready(function(){
$('.list:not(:has(.pa))').addClass('yellow');
})