• js实现类名的添加与移除


    方法1:使用className属性;

    方法2:使用classList API; 

    //用于匹配类名存在与否
    function reg(name){
        return new RegExp('(^|\s)'+name+'(\s+|$)');
    }
    
    //hasClass addClass removeClass toogleClass
    var hasClass,addClass,removeClass;
    if('classList' in document.documentElement){
        hasClass = function(obj, cname) {        // obj为要操作的元素对象,cname是类名
            return obj.classList.contains(cname);
        };
        addClass = function(obj, cname) {
            obj.classList.add(cname);
        };
        removeClass = function(obj,cname) {
            obj.classList.remove(cname);
        };
        toggleClass = function(obj, cname) {
            obj.classList.toggle(cname);
        };
    }else{
        hasClass = function(obj, cname) {
            return reg(cname).test(obj.className);
        };
        addClass = function(obj, cname) {
            if(!hasClass(obj,cname)){
                obj.className=obj.className+' '+cname;    
            }
        };
        removeClass = function(obj, cname) {
            obj.className=obj.className.replace(reg(cname),' ');
        };
        toggleClass = function(obj, cname) {
            var toggle=hasClass(obj,cname)?removeClass:addClass;
            toggle(obj,cname);
        };
    }
    
    //true
    document.body.classList.toString() === document.body.className;

    注意:这种方法每次只能传一个类名且不能级联操作,而jquery下面的类似操作是可以操作多个类名的。

    所以扩展一下:

    //addClass
    DOMTokenList.prototype.addClass = function(str) {
      tts.split(' ').forEach(function(c){
        this.add(c);
      }.bind(this));
      return this;
    }
    
    //removeClass
    DOMTokenList.prototype.removeClass = function(str) {
      tts.split(' ').forEach(function(t){
        this.remove(t);
      }.bind(this));
      return this;
    }
    
    //removeClass
    DOMTokenList.prototype.toggleClass = function(str) {
      tts.split(' ').forEach(function(t){
        this.toggle(t);
      }.bind(this));
      return this;
    }
  • 相关阅读:
    神经网络学习笔记(2)
    从机器学习到深度学习资料整理
    在进行机器学习建模时,为什么需要验证集(validation set)?
    Python-绘制3D柱形图
    MIT FiveK图像转化--DNG到TIFF,TIFF到JPEG
    MIT-Adobe FiveK Dataset 图片自动下载
    matplotlib基础
    Numpy基础
    一个电磁感应小实验
    windows 代理服务器的搭建,提供Android 端访问公网.
  • 原文地址:https://www.cnblogs.com/colima/p/6268989.html
Copyright © 2020-2023  润新知