原生javascript实现addClass和removeClass

版权声明:原创文章,转载请注明出处。 https://blog.csdn.net/aitcax/article/details/53233007

addClass()和removeClass()是jQuery提供的功能。
用法:
$(selector).addClass(classname);$(selector).removeClass(classname);

在大多数情况下,使用jquery的选择器选择的元素是可以使用这两个方法来追加和删除class属性的,但是有一些特殊情况,不是通过$()选择器及jQuery其他方法(比如parent(), children()[0]等)拿到的元素,是没法使用这两个方法的。
比如下面这种情况:

var cArray = $("input[type='checkbox']");
for (var i=0; i < cArray.length; i++) {
    var element = cArray[i].parentElement;
    element.addClass('uncheck_1');
    //element.className += 'uncheck_1';
}

在这段代码里面,element是通过parentElement拿到的,所以在执行element.addClass('uncheck_1');的时候,会报错,提示addClass is not a function()错误。
这个时候,就需要使用原生的javascript方法来添加class了。

下面是通过原生的javascript实现了三个方法,可以解决上述问题。

function hasClass(element,cName){        //检查class是否存在
    return !!element.className.match(new RegExp('(\\s|^)'+cName+'(\\s|$)'));
}
function addClass(element,cName){        //添加一个class
    if(!hasClass(element,cName)){
        element.className +=' '+cName;
    }
}
function removeClass(element,cName){        //移除一个class
    if(hasClass(element,cName)){
        element.className = element.className.replace(new RegExp('(\\s|^)'+cName+'(\\s|$)'),' ');
    }
}

猜你喜欢

转载自blog.csdn.net/aitcax/article/details/53233007