Javascript 我可以将多个命令附加到同一个jQuery选择器吗

Javascript 我可以将多个命令附加到同一个jQuery选择器吗,javascript,jquery,selector,Javascript,Jquery,Selector,简言之: 这是: $('#password').html('Weak').css({'background-color' : '#FF0000' , 'color' : '#FFFFFF'}); 等于这个吗 $('#password').css({'background-color' : '#FF0000' , 'color' : '#FFFFFF'}); $('#password').html('Weak') 它们对我来说都是一样的——但我只是想确定它们确实是一样的……几乎是一样的 $('

简言之:

这是:

$('#password').html('Weak').css({'background-color' : '#FF0000' , 'color' : '#FFFFFF'});
等于这个吗

$('#password').css({'background-color' : '#FF0000' , 'color' : '#FFFFFF'});
$('#password').html('Weak')
它们对我来说都是一样的——但我只是想确定它们确实是一样的……

几乎是一样的

$('#password').html('Weak').css({'background-color' : '#FF0000' , 'color' : '#FFFFFF'});
为选择器
#password
构建一次
jQuery
对象

$('#password').css({'background-color' : '#FF0000' , 'color' : '#FFFFFF'});
$('#password').html('Weak')
为选择器
#password
构建一个
jQuery
对象两次

这次重要吗不是真的
#jQuery中有一些东西
可以快速使用
document.getElementById
来匹配正确的元素

然而,如果你有

$('input[value^=your_complex_selector],div div div,img[src$=.jpg]')
你不停地调用它却不缓存它。。。你可以看到我们要去哪里

通过将jQuery对象分配给变量,可以在不损失可读性的情况下获得链接的性能优势:

var password = $('#password');
password.css({'background-color' : '#FF0000' , 'color' : '#FFFFFF'});
password.html('Weak');
这通常是一样的,但是有些方法会影响所选元素的集合,所以不一定相同。在你的特殊情况下,是的,完全一样


使用“链”更有效,因为DOM只需搜索一次。在您的示例中,通过“id”进行查找时,这并不是一个巨大的节约,但确实是一件了不起的事情。

答案是几乎是肯定的,它们是相等的,但第一次查询会更快


第二个查询在文档中搜索两次#password元素

是的,这称为链接,比第二个示例更可取,因为在第二个示例中,您将再次使用find the DOM元素,而不是使用第一个示例中已经使用的元素

是的,链接jquery命令总是更好的。这将保存jquery以每次获取元素

$('#password').html('Weak').css({'background-color' : '#FF0000' , 'color' : '#FFFFFF'});
比即使它们具有相同的功能也要好

$('#password').css({'background-color' : '#FF0000' , 'color' : '#FFFFFF'});
$('#password').html('Weak')

是的,结果是相同的,但是使用第一种方法,您只需找到该元素一次,jQuery将只创建一个jQuery对象,从而节省内存

这叫做链锁。jQuery等库的一个重要特性

您可以通过将jQuery对象分配给变量来优化调用,这样就不必多次调用jQuery函数,从而节省内存和速度

var $password = $('#password');

$password.css({

  'background-color': '#FF0000',
  'color': '#FFFFFF'

});

$password.html('Weak');

在上一个示例中,您的意思是:obj.css…&obj.html。。。是吗?@Alon:当然,谢谢:P(尽管我很懒,把
obj
改名为
password
,而不是把两个变量改为
obj
:P)