Javascript jQuery选择器重用最佳实践

Javascript jQuery选择器重用最佳实践,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,将DOM对象存储为变量时,使用该变量的最佳做法是: //选项1 var myElement1=$(“.container”).find('ulli:eq(1)'); $(myElement1.css('background','red'); //选择2 var myElement2=$(“.container”).find('ulli:eq(2)'); css('background','blue') 一个 两个 三 第二个选项是完全有效的良好实践,但第一个选项毫无意义。您正在尝试jQu

将DOM对象存储为变量时,使用该变量的最佳做法是:

//选项1
var myElement1=$(“.container”).find('ulli:eq(1)');
$(myElement1.css('background','red');
//选择2
var myElement2=$(“.container”).find('ulli:eq(2)');
css('background','blue')

  • 一个
  • 两个

第二个选项是完全有效的良好实践,但第一个选项毫无意义。您正在尝试jQueryify一个已经jQueryify的对象。它基本上类似于
$($(“body”)

还请注意,最好将
$
前置到包含jQuery对象的变量。您的代码应该如下所示:

var $myElement2 = $(".container").find('ul li:eq(2)');
$myElement2.css('background', 'blue');
正如@Terry所写,最优化的方法是:

var $c = $(".container ul li");
var $second = $c.eq(2);

第二种选择是完全有效和良好的做法,但第一种选择毫无意义。您正在尝试jQueryify一个已经jQueryify的对象。它基本上类似于
$($(“body”)

还请注意,最好将
$
前置到包含jQuery对象的变量。您的代码应该如下所示:

var $myElement2 = $(".container").find('ul li:eq(2)');
$myElement2.css('background', 'blue');
正如@Terry所写,最优化的方法是:

var $c = $(".container ul li");
var $second = $c.eq(2);

你是对的,第一种情况是多余的,实际上需要更长的时间来执行(虽然不是很多)

您可以在此处的代码段中看到:

var s=window.performance.now();
var myElement1=$(“.container”).find('ulli:eq(1)');
$(myElement1.css('background','red');
var e=window.performance.now();
控制台日志(e-s);
s=window.performance.now();
var myElement2=$(“.container”).find('ulli:eq(2)');
css('background','blue');
e=window.performance.now();
控制台日志(e-s)

  • 一个
  • 两个

你是对的,第一种情况是多余的,实际上需要更长的时间来执行(虽然不是全部)

您可以在此处的代码段中看到:

var s=window.performance.now();
var myElement1=$(“.container”).find('ulli:eq(1)');
$(myElement1.css('background','red');
var e=window.performance.now();
控制台日志(e-s);
s=window.performance.now();
var myElement2=$(“.container”).find('ulli:eq(2)');
css('background','blue');
e=window.performance.now();
控制台日志(e-s)

  • 一个
  • 两个

Yep,选项一是多余的,因为
myElement1
已经是一个jQuery对象。两者都不返回jQuery对象吗?如果是这样的话,如果你把它包装在额外的包装里也没关系。作为旁注:我总是喜欢在javascript中将jQuery对象的变量标记为
var$myElement1
,并用美元符号来记住它实际上是一个jQuery对象。因为我们讨论的是最佳实践和所有内容……我总是存储以“$”为前缀的jQuery对象,所以选项2使用$myElement2。它使跟踪变得更容易。他们使用选项1不像您所展示的那样,而是在函数中执行某些操作时,他们希望同时接受jquery对象和HtmleElement。没有人会像选项1那样编写代码,这是没有意义的。是的,选项1是多余的,因为
myElement1
已经是一个jQuery对象了。两者都不返回jQuery对象吗?如果是这样的话,如果你把它包装在额外的包装里也没关系。作为旁注:我总是喜欢在javascript中将jQuery对象的变量标记为
var$myElement1
,并用美元符号来记住它实际上是一个jQuery对象。因为我们讨论的是最佳实践和所有内容……我总是存储以“$”为前缀的jQuery对象,所以选项2使用$myElement2。它使跟踪变得更容易。他们使用选项1不像您所展示的那样,而是在函数中执行某些操作时,他们希望同时接受jquery对象和HtmleElement。没有人会像选项1那样编写代码,这毫无意义。