正则 removeClass

下面这个函数是去掉元素上指定的className,这功能用得多,看了其它人写的,都是先把className转行数组后,再删掉的,我就用正则来做吧,写这个函数的时候也碰到了问题,幸好有群里的.net和小袁帮忙,才得以完成。

function removeClass(o, name) {

	var oClass = o.className;

	var reg = "/" + name + "[\\s|$]|\\s*" + name + "$/g"; 

        //不能直写成/name[\s|$]|\s*name$/g,这样正则会直接把name当成字符串了,所以得用eval。

	o.className = oClass ? oClass.replace(eval(reg), '') : '';

}

示例 :

<div id="box" class="box1 box2 box"></div>

<script type="text/javascript">

   var box11 = document.getElementById('box');

   function removeClass(o,name){

        var oClass = o.className;

        var reg = "/"+name+"[\\s|$]|\\s*"+name+"$/g";

        o.className = oClass ? oClass.replace(eval(reg),'') : '';

}

removeClass(box11,"box");

alert(box11.className);

</script>

id为box的class可以为空,box这个class也可以是任意位置。大家自己测试一下吧。


PS:刚才在书上看到正则里的另一个符号‘\b’;匹配字符边界,试了下,可以用在这里,这样正则的写法就题名简单了;

function removeClass(o, name) {

	var oClass = o.className;

	var reg = "/\\b" + name + "\\b/g";

	o.className = oClass ? oClass.replace(eval(reg), '') : '';

}

你可能感兴趣的:(removeClass)