2016-05-14 47 views
5

什么是写这个的更有效的方法:JQuery的,如果()VS:包含

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

OR

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

那么这两个不相等,首先。第二个可以匹配比第一个更多的节点。 – dfsq

+0

即使这个问题本身是模棱两可的......第二显然是更少的代码行和更多*“高效写”*,但并不一定等于*“更有效地处理”* – charlietfl

+1

假设这是关于性能,情况可能会分裂毛发,但这可能是一个很好的阅读:http://stackoverflow.com/questions/111368/how-do-you-performance-test-javascript-code –

回答

3

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

你可以更通过调用缓存来$('.shipping .price')这样加快速度:

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

然而,对于几乎所有的现实场景的性能差异不会在所有问题,你应该去的选项这对其他人来说更有效率。如果你真的关心性能(例如,如果你有一个相当大的价格表),你应该使用vanilla JS,在这种情况下,速度要快10倍。