原生js添加删除class



之前在网上查过一些添加删除class的原生js写法,感觉用着很方便,于是我就自己按自己的需求找了一个

Object.prototype.hasClass = function(cls) {
    return this.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
};

Object.prototype.addClass = function(cls) {
    if (!this.hasClass(cls)) this.className += " " + cls;
};

Object.prototype.removeClass = function(cls) {
    if (this.hasClass(cls)) {
        var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
        this.className = this.className.replace(reg, ' ');
    }
};

Object.prototype.toggleClass = function(cls){
    if(this.hasClass(cls)){
        this.removeClass(cls);
    }else{
        this.addClass(cls);
    }
};

以上是我修改之后的版本,改动不多,只是把原本的function hasClass(obj,cls)等改为了Object.prototype.function,同时把function内的obj全都进行了相关的修改,之前试过用reg.test在hasClass中进行判定,结果出错,出现了在同一元素中可多次添加相同class的问题,之后改为match后问题解决。
在使用中发现,原始版本的使用比我改的更为自由,在此添加上之前我所找到的原始版本,应该没有太多的改动。

function hasClass(obj,cls) {
    return obj.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
};

function addClass(obj,cls) {
    if (!hasClass(obj,cls)) obj.className += " " + cls;
}

Object.prototype.removeClass = function removeClass(obj,cls) {
    if (hasClass(obj,cls)) {
        var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
        obj.className = obj.className.replace(reg, ' ');
    }
};

function toggleClass(obj,cls){
    if(this.hasClass(obj,cls)){
        this.removeClass(obj,cls);
    }else{
        this.addClass(obj,cls);
    }
};


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值