来自文档:
$(selector, context)
内部实现了 .find()
方法。
但是当我们编写一些像这样的选择器时;
$('#a.b.c')
或
$('#a > .b > .c')
等等
这是否实现了.find()
方法?或者 jQuery 用于此目的的其他机制。
请解释一下这个解析机制。
最佳答案
现代实现会将选择器交给 document.querySelectorAll()
,浏览器将尝试将其解析为 CSS 选择器(假设它有效)。
如果做不到这一点,jQuery 就会退回到它自己的选择器引擎 Sizzle ,它在实现后代和同级选择器时使用内部方法和计算来遍历 DOM,这些选择器很可能不使用 .find()
这样的方法,因为这会导致不必要的开销。
关于jQuery:选择器解析机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12471959/