我应该在removeClass()之前检查元素hasClass()吗?

时间:2018-08-15 02:52:04

标签: javascript jquery

如果我确实想从元素中删除某个类,我应该盲目调用removeClass()还是应该先与hasClass()检查?

这两种方法在性能上都有任何可提及的优势吗?有最佳实践吗?

示例:

function showMessage(){
    $('.message').removeClass('hidden');
}

vs。

function showMessage(){
    if($('.message').hasClass('hidden')){
        $('.message').removeClass('hidden');
    }
}

1 个答案:

答案 0 :(得分:7)

如果元素上不存在类,则对removeClass()的调用不会引发任何错误,因此实际上不需要首先调用hasClass()。只会造成额外的开销。

在询问性能时,对getClass()removeClass()的调用可能很快。重复查询DOM中的.message元素会使速度变慢。因此,如果您想先调用hasClass(),最好不要重复元素查找:

function showMessage() {
    const message = $('.message');

    if(message.hasClass('hidden')){
        message.removeClass('hidden');
    }
}