jquery选择器或变量之间是否存在性能差异

Bai*_*ijs 9 performance jquery css-selectors

最近我一直想知道在重复选择器之间是否存在性能差异,或者只是使用var并将选择器存储在那里并且只是引用它.

$('#Element').dothis();

$('#Element').dothat();

$('#Element').find('a').dothat();
Run Code Online (Sandbox Code Playgroud)

要不就

var Object = $('#Element');

Object.dothis();

Object.dothat();

$('a', Object).dothat();
Run Code Online (Sandbox Code Playgroud)

我更喜欢第二种方式,因为它看起来更干净,更易于维护.

Ale*_*ton 7

肯定存在性能差异,因为每次都不必执行sizzle,但是,还存在功能差异.如果dom恰好在第1次和第3次调用之间发生变化,则缓存的jQuery对象仍将包含旧的元素集.如果您缓存一个集合然后在回调中使用它,通常会发生这种情况.