2016-05-14 62 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倍。