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|$)'),' ');
}
}