我应该在“addClass”之前使用“hasClass”吗?
我遇到了下面的脚本,它检查一个元素是否具有类a
,如果不是,则添加它:
if (!$("div").hasClass("a")){ $("div").addClass("a"); }
由于jQuery不会添加类,如果它已经存在,这可以被改为:
$("div").addClass("a");
然而,有没有任何性能改进,首先使用hasClass
,或者这是使用addClass
不pipe怎么样的方法,因此重复逻辑?
.hasClass()
检查没有用,因为jQuery 也会一直检查 .addClass()
。 这只是额外的工作。
你可以在源代码中看到: https : //github.com/jquery/jquery/blob/master/src/attributes/classes.js#L38-L45它们在使用addClass
时检查类是否存在。
因此,在这种情况下,没有理由使用.hasClass()
( 如果元素没有类,则需要执行更多操作。
值得一提的是,在有限的testing中,使用.hasClass()
提高性能: http : .hasClass()
但是,即使独立的.removeClass()
在Chrome中报告的速度比以前慢了几倍,它每秒钟大约有70,000次操作。