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

Joe*_*e B 6 javascript jquery jquery-selectors

我认识的开发人员倾向于反复调用相同的JQuery选择器,而不是将结果存储在变量中.它们与这种方法一致.

例如,他们这样做:

var propName = $(this).attr('data-inv-name');
var propValue = $(this).attr('data-inv-value');
Run Code Online (Sandbox Code Playgroud)

而不是这个:

var current = $(this);
var propName = current.attr('data-inv-name');
var propValue = current.attr('data-inv-value');
Run Code Online (Sandbox Code Playgroud)

后一种方法对我来说是正确的,但也许我错过了一些东西.这是一个简单的例子,但我看到$(this)在同一个函数中重复了几十次.

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

sta*_*eth 9

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

var $current = $(this);
var propName = $current.attr('data-inv-name');
var propValue = $current.attr('data-inv-value');
Run Code Online (Sandbox Code Playgroud)


Tra*_*s J 9

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

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

所以在这种情况下,请更好地阅读.如果连续出现了十几次$(this),那么应该按照指示存储变量,或者更有可能利用错过的链接.

  • 也是一个很好的回应...如果有一段时间我偏离**神模式**在他的答案中,那就是我在使用`$(this)`...这是选择你真正试图避免重复的行为,老实说,在很多方面,"这个"在你的逻辑中是非常具有描述性的. (2认同)