有什么更有效的方式编写此代码:

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

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

最佳答案

quick test显示带有if的代码的运行速度比带有contains -selector的代码快约5倍。但是,正如其他人已经在评论中解释的那样,两者并不等效。

您可以通过如下方式缓存对$('.shipping .price')的调用来进一步提高速度:

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

但是,对于几乎每种现实情况,性能差异都没有关系,您应该选择对其他人更有效地阅读的选项。如果您真的很在意性能(例如,如果您的价格表相当大),那么在这种情况下,应该使用Vanilla JS wich快大约10倍。

关于jQuery if()与:contains,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37232106/

10-11 14:09