可以将 JQuery 选择器的结果存储在变量中吗?

Is it okay to store the result of a JQuery selector in a variable?

我认识的开发人员倾向于一遍又一遍地调用相同的 JQuery 选择器,而不是将结果存储在变量中。他们与这种做法是一致的。

例如,他们这样做:

var propName = $(this).attr('data-inv-name');
var propValue = $(this).attr('data-inv-value');

而不是这个:

var current = $(this);
var propName = current.attr('data-inv-name');
var propValue = current.attr('data-inv-value');

后一种方法对我来说是正确的,但也许我遗漏了什么。这是一个简单的例子,但我已经看到 $(this) 在同一个函数中重复了几十次。

使用 JQuery 进行开发的最佳实践是什么?重复调用选择器还是存储在变量中?

如果我要多次使用同一个选择器,我总是创建一个变量。我建议的一个改变是在你的变量名前使用 $ 来表示它是一个 jQuery object

var $current = $(this);
var propName = $current.attr('data-inv-name');
var propValue = $current.attr('data-inv-value');

显示的分析是微优化。重复使用 $(this) 与将 $(this) 存储在变量中并重新使用它不会对性能造成重大影响。

你真正想要存储结果的时候是当那里有一个实际的选择器时。重复调用 $(this) 的唯一打击是调用非常轻量级的 jQuery 构造函数。

所以在这种情况下,选择读起来更好的东西。如果确实连续 $(this) 出现,那么应该按照指示对变量进行一些存储,或者更可能有机会采取错过了链接的优势。

理论上多次选择组件比使用已有的组件需要更多的过程...

如果您的页面中没有太多选择器,则差异几乎为零(我想这是更常见的情况)...然后您可以考虑是什么让它更具可读性或易于修改...

有时你会在十几行中使用同一个元素,在这种情况下我更愿意将其分配给一个变量,因为当元素改变时我只需要改变一行(我分配变量的那一行)。 ..