我想找出特定子代的特定元素。我可以这么做:
$(element).children('.second').find('.third')
显然,这也同样有效:
$(element).find('> .second .third')
我更喜欢后者,但我找不到选择器的文档,从 '>‘>符号开始.这份文件什么也没说。我的问题是:使用第二个安全吗?它是jQuery API的一部分吗?
发布于 2015-04-02 07:23:18
希望找到元素的特定子元素的特定后代。
选择器称为直接子选择器。你需要使用:
//vv SPECIFIC CHILDREN
$(element).find('.second > .third');
//^^DESCENDANTS
发布于 2015-04-02 07:45:59
是的,它们是等价的。基本上是$(element).children('.myclass') == $(element).('> .myclass') == $(document).find(element > .myclass)
。
当您在jQuery选择器中使用一个空格时,您的意思是匹配后代。
因此,$(element).find('> .second .third')
的意思是“在属于类third
的元素中(在任何级别上)查找属于类second
的元素,这些元素是元素的直接子元素。
$(element).children('.second').find('.third')
的意思是一样的。
看看这个结构
<div id="parent">
<div class="second"></div>
<div class="second">
<div class="third"></div>
<div class="third"></div>
<div class="placeholder">
<div class="third"></div>
<div class="second">
<div class="third"></div>
</div>
</div>
</div>
</div>
不同选择器的结果如下:
$(document).ready(function () {
//Direct children (second)
console.log("0: " + $('#parent').find('> .second').length) // 2
//All children (second) + All children (third)
console.log("1: " + $('#parent').children('.second').find('.third').length) // 4
console.log("2: " + $('#parent').find('> .second .third').length) // 4
//All children (second) + direct children (third)
console.log("3: " + $('#parent').children('.second').find('> .third').length) // 2
//Direct children (second) + direct children (third)
console.log("3: " + $('#parent').find('> .second > .third').length) // 2
});
https://stackoverflow.com/questions/29407080
复制相似问题