我应该在removeClass()之前检查元素是否为hasClass()?

use*_*253 1 javascript jquery

如果我肯定想从某个元素中删除某个类,我应该盲目地打电话removeClass()还是应该先查看hasClass()

在这两种方法中都有任何值得提及的性能优势吗?这是最好的做法吗?

例:

function showMessage(){
    $('.message').removeClass('hidden');
}
Run Code Online (Sandbox Code Playgroud)

function showMessage(){
    if($('.message').hasClass('hidden')){
        $('.message').removeClass('hidden');
    }
}
Run Code Online (Sandbox Code Playgroud)

Rob*_*sen 7

removeClass()如果元素上没有类,则调用不会抛出任何错误,因此实际上不需要先调用hasClass().它只会导致额外的开销.

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

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

    if(message.hasClass('hidden')){
        message.removeClass('hidden');
    }
}
Run Code Online (Sandbox Code Playgroud)

  • DOM查找重载是一个很好的提示!这也是在`on()`中使用`$(this)`吗?如果我打算多次使用它,我应该在变量中存储`$(this)`吗? (2认同)