jquery获得子节点满足一定条件的元素。

`<div id="noThis" class="a"><div><span class="condition"><span class="irrelevant"></span></div></div>
<div id="iWantThis" class="a"><div><span class="irrelevant"></span></div></div>
`
我想用jquery选出所有没有.condition的div。
类似于$(".a").without(".condition");,最基本的目的是获得子节点没有<span class="condition">的div,希望能够较深的树上高效的执行。

阅读 2.9k
3 个回答

我们换个想法,你无非是想获取.irrelevant这个类的上层.a元素!

$(".irrelevant").parents(".a")

我错了……
貌似condition里面也有!
那么,使用jquery的filter()方法,配合not试试.

$(".a div span").filter(":not('.condition')").parents(".a").css("background-color","yellow");

提供一种方案

$('.a').filter(function (index){
    if($(this).find('.condition').length==0) {
        return index;
  }
});

子节点,较深的树?好像有点矛盾啊。。题主是想说在不定层级的后代元素里找吧。说一个不成熟的思路,在特定类名触发一个事件,在你需要的div层级监听冒泡,监听到一个排除一个,剩下的就是你要的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题