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

时间:2011-08-05 15:19:40

标签: javascript jquery selector

用简单的话说:

这是:

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

等于这个?

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

他们对我的工作方式相同 - 但我只是想确保它们真的一样......

6 个答案:

答案 0 :(得分:6)

几乎。

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

为选择器jQuery构建一个#password对象。

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

为选择器jQuery构建两次#password对象。

这次重要吗? 不是:jQuery中#somethingheavily optimized,可以快速使用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');

答案 1 :(得分:1)

是的,链接jquery命令总是更好。这将节省jquery每次都获取元素。

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

比使用相同功能更好。

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

答案 2 :(得分:0)

嗯,通常是同样的事情,但是有些方法会影响所选元素的集合,因此它不一定相同。在您的特定情况下,是的,它完全相同。

使用“链”更有效,因为DOM只需要搜索一次。当你的例子中的查询是“id”时,这不是一个巨大的节省,但它是一些东西。

答案 3 :(得分:0)

答案几乎是,它们是相同的,但第一次查询会更快。

第二次查询为#password元素

搜索文档两次

答案 4 :(得分:0)

是的,这称为链接,并且比第二个示例更受欢迎,因为在第二个示例中,您将再次查找DOM元素,而不是使用第一个示例中已使用的元素

答案 5 :(得分:0)

是的,结果是一样的,但是第一种方法只需要找到一次该元素,jQuery只会创建一个jQuery对象,从而节省内存。

它被称为链接。诸如jQuery之类的库的一个重要特性。

您可以通过为变量分配jQuery对象来优化调用,因此您不必多次调用jquery函数,从而节省内存和速度。

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

$password.css({

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

});

$password.html('Weak');