我遇到了以下脚本,它检查元素是否具有 class a
,如果没有,则添加它:
if (!$("div").hasClass("a")){
$("div").addClass("a");
}
由于 jQuery 不会添加已经存在的类,因此可以将其更改为:
$("div").addClass("a");
但是,首先使用是否有任何性能改进hasClass
,或者是否使用与addClass
无论如何都相同的方法,因此重复了逻辑?
我遇到了以下脚本,它检查元素是否具有 class a
,如果没有,则添加它:
if (!$("div").hasClass("a")){
$("div").addClass("a");
}
由于 jQuery 不会添加已经存在的类,因此可以将其更改为:
$("div").addClass("a");
但是,首先使用是否有任何性能改进hasClass
,或者是否使用与addClass
无论如何都相同的方法,因此重复了逻辑?
The .hasClass()
check is not useful because jQuery will also always check from within .addClass()
. It's just extra work.
您可以在源代码中看到:https ://github.com/jquery/jquery/blob/master/src/attributes/classes.js#L38-L45他们在使用addClass
.
所以.hasClass()
在这种情况下没有理由使用..(如果元素没有类,您想执行更多操作则例外。)
.hasClass()
对于它的价值,在我的有限测试中有性能改进:http: //jsperf.com/jquery-hasclass-vs-addclass-and-removeclass
但是,即使.removeClass()
在 Chrome 中独立报告的速度要慢几倍,它也以每秒大约 70,000 次操作的速度出现。