我知道如果您多次使用它,您应该缓存选择器的结果.一个例子是:
var $selected = $('.some-selected-element'); process($selected); doStuff($selected);
但如果多次使用缓存$(this),是否有任何性能优势?
$('.some-selector').hover(function () { if (!$(this).hasClass('some-other-class')) { $(this).addClass('another-class'); } process($(this)); }
解决方法
是的,性能提升,因为它可以防止jQuery解释你的选择器.
这是选择器的解释,以及你将绕过的东西. https://github.com/jquery/jquery/blob/master/src/core.js#L78-188
基本上,这部分
if ( selector.nodeType ) { this.context = this[0] = selector; this.length = 1; return this; }