jquery:排除孩子

前端之家收集整理的这篇文章主要介绍了jquery:排除孩子前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道这已被多次询问,我已经尝试了所有的建议,并阅读了所有关于不同的选择器等等,但没有什么对我有用

给出以下HTML

<div class="class1">
  <p>
   <a>link</a>
  </p>
  <div class="class2 class3">
    <p>
      <font>
        <a>link2</a>
      </font>
    </p>
  </div>
</div>

我想选择第一个div< a>标签,但没有从第二个div

我试过了:

$('.class1').not('.class2,.class3')
$('.class1').not('.class2')
$('.class1').not('.class3')
$(".class1:not(.class2)")
$(".class1:not(.class3)")
$(".class1:not(.class2,.class3)")
$("div.class1:not(.class2)")
$("div.class1:not(div.class2)")
$("div.class1:not(div.*)")

等等

我不知道是不是因为第二个div有两个类名,或者因为第二个div是< a>标签不是第二个div的直接子节点(例如,它们周围有字体标签等),但我无法排除第二个div.

解决方法

您是否尝试过子选择器> ?
div.class1 > p > a

将只选择class1的直接后代.

如果您需要更广泛的规则,我认为您只需在一个示例中添加一个空格:

$(".class1 :not(.class2) a")

评论更新:这有效:

$(".class1 > :not(.class2.class3) a").css('border','1px solid red');

猜你在找的jQuery相关文章