这些jQuery选择器之间有什么区别吗?

时间:2011-05-23 05:29:34

标签: jquery jquery-selectors

下面三个样本之间有什么区别,哪一个更好(如果有的话)?

$("#x span").hide();

$("#x").find("span").hide();

$("span", "#x").hide();

2 个答案:

答案 0 :(得分:3)

他们都会匹配同样的东西; 最佳一个基于上下文。我会使用第一个例子,除非我有一个指向现有集合的变量。那么我显然会在其上使用find()方法。

旧的$(selector, context)(你的第三个例子)现在看不多,可能是因为它无论如何都会在幕后转换为$(context).find(selector)(并且更容易阅读)。

答案 1 :(得分:-1)

这些都做出相同的选择,但是第一次表现比执行大致相同的最后两次表现更差,请参阅:

http://jsperf.com/jquery-selector-perf-right-to-left/48

http://jsperf.com/jquery-selector-context-vs-find

http://jsperf.com/jquery-selector-performance/11