javascript - 我应该在 removeClass() 之前检查一个元素是否 hasClass() 吗?
问题描述
如果我确实想从元素中删除某个类,我应该盲目调用removeClass()
还是应该先检查hasClass()
?
在这两种方法中是否有任何可提及的性能优势?对此有最佳做法吗?
例子:
function showMessage(){
$('.message').removeClass('hidden');
}
对比
function showMessage(){
if($('.message').hasClass('hidden')){
$('.message').removeClass('hidden');
}
}
解决方案
如果元素上不存在类,则调用removeClass()
不会引发任何错误,因此实际上不需要先调用hasClass()
。它只会导致额外的开销。
但是,当询问性能时,调用getClass()
和removeClass()
可能会很快。正是.message
在 DOM 中重复查找元素会减慢速度。因此,如果您想先调用hasClass()
,最好不要重复元素查找:
function showMessage() {
const message = $('.message');
if(message.hasClass('hidden')){
message.removeClass('hidden');
}
}