鉴于此:
<div id="div1"> <div id="div2"> <div id="div200"> <div id="div3" class="b"> </div> <div id="div300"> <div id="div4" class="b"> <div id="div5"> <div id="div6" class="b"> </div> </div> </div> <div> <div> <div> </div>
我需要一种方法来找到一个“b”类的元素的子(深),而不是嵌套在匹配元素中的元素.
测试用例:
这就是我需要的:
情况1:
$("#div1").some_jquery_Syntax(".b") Should return: div3,div4
情况2:
$("#div5").some_jquery_Syntax(".b") Should return: div6
请注意,硬盘部分是从div1开始时必须跳过div2.所以我不能只使用$(“#div1”).find(“> .b”).
我的尝试:
我试过这个:
$("#div1").find(".b") [<div id="div3" class="b"></div>,<div id="div4" class="b"></div>,<div id="div5" class="b"></div>]
不好:我不想要div5,因为它嵌套在div4中.
我试过这个:
$("#div0").find(".b").not(".b .b") [<div id="div3" class="b"></div>,<div id="div4" class="b"></div>]
从div0开始就可以了,但是从div4起不起作用:
$("#div5").find(".b").not(".b .b") []
解决方法
找到直接的大孩子:
$("#div1").children().children(".b");
小提琴:http://jsfiddle.net/jonathansampson/Dy6GJ/
如果你不知道有多深,但是希望所有的.b不在.b文件中,那么在尊重父权限制的同时使用过滤器.您可以使用.parentsUntil方法:
var parent = "#div1"; $(".b",parent).filter(function(){ return !$(this).parentsUntil(parent,".b").length; }).css("border","1px solid red");