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

转载于:https://www.cnblogs.com/sky000/archive/2010/10/14/1851652.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值