我遇到了下面的脚本,它可以检查一个元素是否有类。a
如果不存在,则添加它。
if (!$("div").hasClass("a")){
$("div").addClass("a");
}
因为jQuery不会在类已经存在的情况下添加它,所以可以改成:
$("div").addClass("a");
然而,有没有任何性能改进,通过使用 hasClass
还是用同样的方法。addClass
反正是这样,因此重复了逻辑?
在 .hasClass()
检查没有用,因为jQuery 也会经常检查 从内部 .addClass()
. 这只是额外的工作。
你可以在源码中看到。https:/github.comjqueryjqueryblobmastersrcattributesclasses.js#L38-L45。 他们在使用该类时,会检查该类是否存在。addClass
.
所以没有理由使用 .hasClass()
在这种情况下... (如果你想执行更多的动作,而元素又没有这个类,那就会出现例外...)
就其价值而言,有了它,性能就有了提升。.hasClass()
在我有限的测试中。http:/jsperf.comjquery-hasclass-vs-addclass-and-removeclass。
然而,即使在独立的情况下 .removeClass()
报道称,在Chrome浏览器中,速度慢了好几倍,它的速度大约是每秒7万次操作。