基于没有类里面的jQuery选择器

时间:2015-03-05 19:03:02

标签: javascript jquery jquery-selectors

我需要根据元素内部的元素选择一个元素。

<div class="person">
  <div class="name">Jason</div>
</div>

<div class="person">
</div>

选择带div类的第二个person,我需要做什么。我知道有hasnot属性,我是否需要以某种方式将它们组合起来才能使其生效?

3 个答案:

答案 0 :(得分:2)

您可以使用选择器:

$(".person:not(:has(.name))")

但我建议你过滤它:

  

因为:has()是一个jQuery扩展而不是CSS的一部分   规范,查询使用:has()无法利用   本机DOM querySelectorAll()提供的性能提升   方法

$(".person").filter(function(){
    return !$(this).find(".name").length;
})

-jsFiddle-

答案 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.