缓存选择器如何在引擎盖下工作

时间:2015-07-30 20:41:23

标签: javascript jquery caching

这是一个非常普遍的问题 是:

$el.siblings(".class"); 

更好的做法
$("#id") 

在以前使用$ el时访问元素,因此已存储在变量中?

由于以下几个原因,我对此有点不确定:

  • id显然非常快;
  • 我不完全确定在原始元素被缓存时是否需要遍历DOM来获取兄弟元素。

在这个问题之后,我想知道jQuery在缓存选择器时如何继续引用内部DOM节点(例如$el = $("#el");)。虽然我知道语法,但我不确定引擎盖下会发生什么(即如何在JS中编写引用程序)。

对此有任何正式确认?

1 个答案:

答案 0 :(得分:0)

在幕后,jQuery只引用了DOM元素。每次你这样做:

$("#el")

jQuery必须解析选择器以确定它正在寻找ID,然后调用document.getElementById("el")。它将结果保存在jQuery对象中。如果你这样做:

$el = $("#el");

然后从那时起使用$el,它不需要进行任何解析,也不必调用getElementById()来查找元素。所有jQuery方法都可以简单地使用包含已保存DOM元素的实例变量。