JQuery如何选择引擎盖下的元素?

时间:2014-01-18 04:55:07

标签: jquery jquery-selectors internals

我想知道jquery在内部是如何工作的。例如,我想知道jquery选择器如何在引擎盖下工作?它是否遍历所有DOM元素?或者它有另一种寻找元素的神奇算法?

它与.find()和.filter()函数有什么不同?

你们有什么想法吗?

1 个答案:

答案 0 :(得分:0)

当jQuery需要从元素应用样式规则时,jQuery使用与浏览器本身完全相同的原则 - 扫描所有元素并检查CSS中声明的所有规则。

jquery也是如此:

for each element in given subtree/input set do
  if element matches selector do 
     add element to output set
  end if
end for
return output set

因此该任务的计算复杂度为O(N) 其中N是输入集中的多个DOM元素。

一般而言,可能的技巧/优化很少 它就像那样复杂。

有些jQuery选择器的复杂性更低,例如: $( "li:has(ul)")选择器的计算复杂度为O(N*N) 所以要小心使用。