我创建了this JSFiddle,它显示了jQuery find
方法如何接受以>
开头的选择器。如果它不理解选择器的开头,它也会用f
字母红色,就像从选择器的开头删除>
并再次运行JSFiddle一样。选择器开头的>
表示选择器的其余部分将直接在<table>
元素下测试,而不是在嵌套表中测试。
我读过the documentation for the find
jQuery method并没有解释这种行为。
那么,我可以依靠这种行为吗?是在互联网上的某处记录或解释过吗?
更新:我知道像“table&gt; tbody”这样的选择器是CSS规范的一部分,并且总是可以在jQuery中使用,但我的问题是选择器以 >
。根据我的知识,这不是CSS的一个特性。我认为jQuery以某种方式解释>
并且要么理解我想直接查看table元素,要么将find
方法传递的选择器追加到我获得{{1}的选择器} element。
更新2:正如您在JSFiddle中看到的,有两个选择器。最后一个元素分两步计算,而不是一步计算,因此jQuery逐步计算最终元素,它不会将第二个选择器附加到第一个选择器并将最终字符串选择器传递给table
函数。我想知道我是否可以依赖jQuery的document.querySelectorAll
方法,该方法是以find
开头的未定选择器。
答案 0 :(得分:2)
这就是direct child选择器,这是一个基本的CSS概念。你可以非常依赖它。
选择器不是以>
开头的。见之前。它由find()
使用。它与前一个父选择器结合使用。所以你的选择器将变得有效:
"table:first > tbody > tr > td:last-child"
不是上面的那个好吗?
答案 1 :(得分:2)
jQuery选择器只接受标准CSS。子选择器(>
)是标准CSS选择器的示例,它是very well supported。
更新:您的jQuery与以下内容没有什么不同:
$("table:first > tbody > tr > td:last-child").css("color", "red");
这可以解释为什么它仍然是标准的CSS。