当$(this)被调用时,jQuery是否重新查询DOM?

时间:2014-01-18 04:09:47

标签: javascript jquery

在下面的代码中,当调用$(this)时,jQuery是否重新查询DOM,就像选择器已经传递给它一样(使用对象的某些属性作为选择器),或者jQuery是否保留了以前退回的对象?

$('.someButton').on('click', function() {
    $(this).remove();  // Is this another lookup, or just a wrapper for the previously returned object?
});

1 个答案:

答案 0 :(得分:5)

它不会重新查询DOM,this已经是一个元素。 jQuery只是将上下文设置为元素,调整长度,然后返回自身。此代码来自init函数,该函数在执行$(something)时运行,这是一个大if..else语句的一部分,它还检查选择器,数组等:

// HANDLE: $(DOMElement)
} else if (selector.nodeType) {
  this.context = this[0] = selector;
  this.length = 1;
  return this;

所以基本上它只是将元素包装在一个新的jQuery对象中。