如果我指定了以下 jQuery 选择器:
$("div#myDivId .myClass")
确切的选择顺序是什么?这将首先选择一个带有 ID 的 div ,myDivId
然后找到其中的所有元素,myClass
还是首先选择所有带有的元素,myClass
然后过滤掉不在 inside 的其余元素myDivId
。
如果我指定了以下 jQuery 选择器:
$("div#myDivId .myClass")
确切的选择顺序是什么?这将首先选择一个带有 ID 的 div ,myDivId
然后找到其中的所有元素,myClass
还是首先选择所有带有的元素,myClass
然后过滤掉不在 inside 的其余元素myDivId
。
Sizzle API(由 jQuery 使用)使用选择器标记“执行”的“从右到左”顺序。
对于支持 QSA(本机 querySelectorAll 函数)的现代浏览器,Sizzle 实际上会将工作委派给它,它也是“从右到左”的。
这是性能比较:Sizzle vs. QSA,我也为您的案例创建了示例:http: //jsperf.com/does-order-of-selectros-matters
另一个问题是为什么它们是“从右到左”的?见这里:https ://stackoverflow.com/questions/5797014/why-do-browsers-match-css-selectors-from-right-to-left