在下面的代码中,当调用$(this)
时,jQuery是否重新查询DOM,就像选择器已经传递给它一样(使用对象的某些属性作为选择器),或者jQuery是否保留了以前退回的对象?
$('.someButton').on('click', function() {
$(this).remove(); // Is this another lookup, or just a wrapper for the previously returned object?
});
答案 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对象中。