我尝试使用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>
CSS:
.yellow {
background-color : yellow;
}
JS:
$(document).ready(function(){
$('.list:not(.pa)').addClass('yellow');
})
或者,您可以使用JSFIDDLE
答案 0 :(得分:0)
它会过滤掉没有该类的.list
元素,而不会过滤掉它的子元素。检查孩子使用jQuery :has()
伪类选择器。
$(document).ready(function(){
$('.list:not(:has(.pa))').addClass('yellow');
})
$(document).ready(function() {
$('.list:not(:has(.pa))').addClass('yellow');
})
.yellow {
color: yellow
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<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>
<li class='list'>
<p class=''>test</p>
<button class='btn'>click</button>
</li>
</ul>
答案 1 :(得分:-1)
您可以使用.filter
过滤掉有孩子.pa
的项目。
$(document).ready(function() {
$('.list').filter(function(){
return $('.pa',this).length == 0;
}).addClass('yellow');
})
.yellow {
color: yellow
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li class='list'>
<p class='pa'>test</p>
<button class='btn'>click</button>
</li>
<li class='list'>
<p>test</p>
<button class='btn'>click</button>
</li>
</ul>