桂林一枝花 发表于 2017-3-21 23:14:20

分享原生js仿jq的addClass,removeClass,hasClass的实现方式

不多说,直接上代码,本人亲测
                          /**
                         * 判断某个dom元素是否有某个类
                         * @author cygnet
                         * @date   2017-03-21T22:23:08+0800
                         * @param{}               obj
                         * @param{}               cls
                         * @return {Boolean}                   包含则返回true
                         */
                          hasClass: function(obj, cls){
                                  // 获取当前元素的所有类名
                                  var _cls = obj.className || obj.class;
                                  // 通过空格把字符串分割成数组ps: 正则表达式 \s 匹配空格
                                  var _cls_arr = _cls.split(/\s+/);
                                  // 循环遍历数组
                                  for(var i = 0; i<_cls_arr.length; i++){
                                          // 如果包含,则返回true
                                          if(_cls_arr == cls) return true;
                                  }
                                  return false;
                          },

                          /**
                         * 元素上移除某个类名
                         * @author cygnet
                         * @date   2017-03-21T22:29:05+0800
                         * @param{}   obj
                         * @param{}   cls [类名]
                         * @return {}         
                         */
                          removeClass: function(obj, cls){
                                  if(this.hasClass(obj, cls)){
                                    obj.className = obj.className.replace( new RegExp( "(\\s|^)" + cls + "(\\s|$)" )," " );
                                 }
                          },


                          /**
                         * 给dom元素增加类
                         * @author cygnet
                         * @date   2017-03-21T22:21:03+0800
                         * @param{}   obj
                         * @param{}   cls [类名]
                         */
                          addClass: function(obj, cls){
                                  // 获取当前元素的类名
                                  var _cls = obj.className || obj.class;
                                  // 当前元素如果类,则空格复制给变量
                                  var _space = (_cls != '') ? ' ' : '';
                                  // 拼接类名
                                  var _addcls = _cls + _space + cls;
                                  // 替换原来的class
                                  obj.className = _addcls;
                          }

ibcadmin 发表于 2017-3-22 08:36:46

+111
页: [1]
查看完整版本: 分享原生js仿jq的addClass,removeClass,hasClass的实现方式