我需要根据元素内部的元素选择一个元素。
<div class="person">
<div class="name">Jason</div>
</div>
<div class="person">
</div>
选择带div
类的第二个person
,我需要做什么。我知道有has
和not
属性,我是否需要以某种方式将它们组合起来才能使其生效?
答案 0 :(得分:2)
您可以使用选择器:
$(".person:not(:has(.name))")
但我建议你过滤它:
因为:has()是一个jQuery扩展而不是CSS的一部分 规范,查询使用:has()无法利用 本机DOM querySelectorAll()提供的性能提升 方法
$(".person").filter(function(){
return !$(this).find(".name").length;
})
答案 1 :(得分:1)
最简单的jquery解决方案$('.person:empty')
,但第二个div必须没有空格
<div class="person">
<div class="name">Jason</div>
</div>
<div class="person"></div>
答案 2 :(得分:0)
你可以选择这样的东西,
function getPersonWithNoNameField() {
$('.person').each(function() {
if($(this).find('div.name').length === 0) {
var ele = $(this);
console.log(ele.html());
return ele;
}
});
}
getPersonWithNoNameField();
For your need, you can customise the function to return element which you want.