jQuery选择器中直接后代(>)与后代的区别是什么?
这两个jQuery语句之间有什么区别? 他们似乎通过让所有的孩子div标签做同样的事情。
$("#mainblock div")
$("#mainblock > div")
$("#mainblock > div")
=仅限子级别
$("#mainblock div")
=所有孩子+ desendents。
看看jQuery Selectors
Child Selector ("parent > child")
– 层次结构选择由“父”指定的元素的“子”指定的所有直接子元素。
Descendant Selector ("ancestor descendant")
– Hierarchy选择作为给定祖先后代的所有元素。
$("#mainblock div")
这个目标是“#mainblock”里面的所有DIV,不管它是“#mainblock”的直接子节点,还是主块子节点的子节点等。
$("#mainblock > div")
这将仅定位“#mainblock”的直接子DIV并忽略其他DIV。 如果你只有直接的孩子,这个比上面快。 因为它不是试图找到孩子的其他元素。
第一个将获得#mainblock
所有div
后代。 第二个将获得#mainblock
直接子#mainblock
所有div
$("#mainblock div")
匹配作为#mainblock后代的任何div元素。
$("#mainblock > div")
匹配作为#mainblock的子元素的任何div元素。
查看http://www.w3.org/TR/CSS2/selector.html
第一个将在任何级别选择任何“#mainblock”子级的div。 第二个将选择任何直接孩子的div。
有关CSS >
选择器的更多信息,请参阅此链接 ,其行为与jQuery中的相同。
$(“#mainblock div”)找到#mainblock下的所有div
$(“#mainblock> div”)只找到了它的孩子
假设你有以下HTML结构:
然后
$("#mainblock div").length = 5 $("#mainblock > div").length = 3