zoukankan      html  css  js  c++  java
  • JS模拟JQ:hasClass、addClass、removeClass方法(初探JQ)

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>JQuery初探</title>
    </head>
    <body>
        <div id="box1" class="box">
            <span>1112</span>
        </div>
        <div id="box2" class="box">
            <span>1113</span>
        </div>
        <div id="box3" class="box">
            <span>1113</span>
        </div>
        <script>
            var Kodo = function(selector){
                return new Kodo.prototype.init(selector);
            }
            Kodo.prototype = {
                constructor : Kodo,
                length : 0,
                splice : [].splice,
                selector : '',
                ele : {},
                className : '',
                idName : '',
                init : function(selector){
                    if(selector){
                        if(selector.substring(0,1) === '#')               
                            this.ele = this.createrEleById(selector.substring(1,selector.length));
                        else if(selector.substring(0,1) === '.')
                            this.ele = this.createEleByClass(selector.substring(1,selector.length));
                    }
                    //console.log(this.ele);   
    
                },
                createrEleById : function(idName){
                    this.idName = idName;
                    this.length ++;
                    return document.getElementById(idName);
                },
                createEleByClass : function(className){
                    var classObj =  document.getElementsByClassName(className);
                    this.className = className;
                    this.length = classObj.length;
                    return classObj;
                },
                toTrim : function(str){
                    //去除字符串两端空格
                    return str.replace(/(^s*)|(s*$)/g, ""); 
                },
                hasClass : function(cls){
                    var reg = new RegExp('(\s|^)' + cls + '(\s|$)');
                    for(var i = 0;i < this.length;i++){
                        if(this.ele[i].className.match(reg))
                            return true;
                    }
                    return false;
                },
                addClass : function(cls){
                    var reg = new RegExp('(\s|^)' + cls + '(\s|$)');
                    for(var i = 0;i < this.length;i++){
                        if(!this.ele[i].className.match(reg))
                            //两类名中间需要使用空格进行隔开
                            this.ele[i].className += ' ' + cls;
                    }
                    return this;
                },
                removeClass : function(cls){
                    //两种可能,一种可能是删除最原始的className,一种可能是删除新加的className
                    var reg = new RegExp('(\s|^)' + cls + '(\s|$)');
                    for(var i = 0;i < this.length;i ++){
                        if(this.ele[i].className.match(reg)){
                            this.ele[i].className = this.ele[i].className.replace(' ' + cls,'');
                            if(this.className.match(reg)){
                                this.length --;i --;
                            } 
                        } 
                    }
                    return this;
                }
            }
            Kodo.prototype.init.prototype = Kodo.prototype;
            Kodo.prototype.ajax = function(){
                console.log('这里可以写ajax');
            }
            window.$ = Kodo;
            console.log($('.box').hasClass('box'),$('.box').hasClass('box1'));
            $('.box').addClass('box1').removeClass('box');
            //目前存在的bug在于无法连续的removeClass,以后有时间再考虑这个问题
        </script>
    </body>
    </html>
  • 相关阅读:
    趁热讲讲skin.xml支持的标签和attributes
    如何配置和编译ogre 1.7.0 + cegui 0.7.1
    关于OGRE基础教程6中CEGUI的layout文件can not locate的问题
    skin.xml皮肤配置讲解
    OCX控件注册相关(检查是否注册,注册,反注册)
    重回博客园继续我的 GUI库
    窗口类的定义
    UI库需要完成的任务
    屏幕截图代码
    深入C++的默认构造函数1
  • 原文地址:https://www.cnblogs.com/xiaohualu/p/10303895.html
Copyright © 2011-2022 走看看