JQuery if()vs:contains

时间:2016-05-14 21:31:27

标签: jquery performance

写这个的效率更高的方法是什么:

if ($('.shipping .price').text() === "FREE"){ 
    $('.shipping .price').addClass('text-primary'); 
}

OR

$('.shipping .price:contains("FREE")').addClass('text-primary');

1 个答案:

答案 0 :(得分:3)

quick test表示if代码的运行速度比使用contains选择器的代码快5倍。但是,正如其他人已经在评论中解释的那样,两者并不相同。

通过缓存$('.shipping .price')这样的呼叫,你可以加快速度:

var elem = $('.shipping .price');
if (elem.text() === "FREE"){ 
  elem.addClass('text-primary'); 
}

然而,对于几乎所有现实生活中的情况,性能差异根本不重要,你应该选择更有效的选择,以便其他人阅读。如果你真的关心性能(例如,如果你有一个相当大的价格表)你应该使用vanilla JS,在这种情况下大约快10倍。