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

时间:2015-05-28 19:05:51

标签: javascript jquery jquery-selectors

我知道的开发人员倾向于反复调用相同的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进行开发的最佳实践是什么?重复调用选择器还是存储在变量中?

3 个答案:

答案 0 :(得分:9)

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

您真正想要存储结果的时间是当有一个实际的选择器时。通过反复调用$(this),你唯一的打击就是调用非常轻量级的jQuery构造函数。

所以在这种情况下,请更好地阅读。如果一行中确实存在十二次出现的$(this),那么应该存在一些如所示的变量,或者更有可能有利用链接的机会错过了。

答案 1 :(得分:8)

如果我要使用相同的选择器两次以上,我总是创建一个变量。我建议的一个改变是在变量名之前使用$来表示它是一个jQuery对象

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

答案 2 :(得分:0)

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

如果你的页面中没有太多的选择器,差异将几乎为空(我猜这是更常见的情况)...然后你可以考虑是什么让它更易读或更容易修改...

有时你在十几行中使用相同的元素,在这种情况下我更喜欢将它分配给一个变量,因为当元素改变时我需要改变一行(我赋予变量的行)......