正则 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), '') : '';
}

posted @ 2010-10-14 19:56  zjhsd2007  阅读(798)  评论(0编辑  收藏  举报