我应该在 "addClass "之前使用 "hasClass "吗?[重复]

问题描述 投票:104回答:3

我遇到了下面的脚本,它可以检查一个元素是否有类。a如果不存在,则添加它。

if (!$("div").hasClass("a")){
   $("div").addClass("a");
}

因为jQuery不会在类已经存在的情况下添加它,所以可以改成:

$("div").addClass("a");

然而,有没有任何性能改进,通过使用 hasClass 还是用同样的方法。addClass 反正是这样,因此重复了逻辑?

jquery performance addclass
3个回答
167
投票

.hasClass() 检查没有用,因为jQuery 也会经常检查 从内部 .addClass(). 这只是额外的工作。


12
投票

你可以在源码中看到。https:/github.comjqueryjqueryblobmastersrcattributesclasses.js#L38-L45。 他们在使用该类时,会检查该类是否存在。addClass.

所以没有理由使用 .hasClass() 在这种情况下... (如果你想执行更多的动作,而元素又没有这个类,那就会出现例外...)


6
投票

就其价值而言,有了它,性能就有了提升。.hasClass() 在我有限的测试中。http:/jsperf.comjquery-hasclass-vs-addclass-and-removeclass。

然而,即使在独立的情况下 .removeClass() 报道称,在Chrome浏览器中,速度慢了好几倍,它的速度大约是每秒7万次操作。

© www.soinside.com 2019 - 2024. All rights reserved.