• 原生js模拟jquery写法


    function $_custom(fun)
    {
        document.onreadystatechange = function()
        {
            if (document.readyState == "complete")
            {
                fun();
            }
        }
    }
    function $(val){
        if(val.indexOf("#")==0)
        {
            var ob=new Array();
            var obj=document.getElementById(val.substring(1));
            ob.push(obj);
            custom.call(ob);
            return ob;
        }
        if(val.indexOf(".")==0)
        {
            var obj=document.getElementsByTagName("*");
            var ob=new Array();
            for(var x in obj)
            {
                if(obj[x].className==val.substring(1))
                {
                    obj2=obj[x];
                    ob.push(obj2);
                }
            }
            custom.call(ob);
            return ob;
        }
    }
    var custom=function(){
        var actions=["click","blur","focus","mouseout","mouseover","change"];
        //样式处理
        this.css=function(param){
            for(var i = 0;i < this.length;i++)
            {
                for(var key in param)
                {
                    this[i].style[key]=param[key];
                }
            }
        };
        var _this=this;
        //函数处理
        (function(){
            for(var k in actions){
                var _o=actions[k];
                _this[_o]= function(){
                    var _oo=_o;
                    return function(fun)
                    {
                        for(var i = 0;i < _this.length;i++)
                        {
                            _this[i]["on"+_oo]=function(event)
                            {
                                fun(event);
                            }
                        }
                    }
                }(_o);
            }
        })(actions);
        //还原javascript基本写法
        this.revert=function(){
            if(_this.length==1)
            {
                return _this[0];
            }
            else{
                alert("Does not support!");
                console.log("Does not support!");
            }
        };
        //模拟鼠标事件
        this.similar=function(actions){
            if(document.all) {
                _this[0][actions]();
            }
            else {
                var e = document.createEvent("MouseEvents");
                e.initMouseEvent(actions, true, true);
                _this[0].dispatchEvent(e);
            }
        };
        //绑定事件
        this.bind=function(actions,fun){
            if(document.all) {
                for(var i = 0;i < _this.length;i++)
                    _this[i].attachEvent("on"+actions,function(){fun.call(_this[i])});
            }else{
                for(var i = 0;i < _this.length;i++)
                    _this[i].addEventListener(actions,fun);
            }
        }
    }
    
    使用方法介绍
    
    样式处理
    
    <script type="text/javascript" src="$_custom.js"></script>
    <script type="text/javascript">    
    $_custom(function(){    
        $("#sp").css({"100px",height:"100px",border:"1px solid red"});
        $(".sp2").css({"100px",height:"100px",border:"1px solid red"});
     })</script>
    <div id="sp">test</div>
    <div class="sp2">test</div>
    <div class="sp2">test</div> 
    
    事件处理
    
    //支持的事件在actions数组里拓展
    $("#sp").click(function(){
      alert(′test′);
    }) 
    
    原始写法
    
    $("#sp").revert().style.display=′none′;
    
    模拟鼠标事件
    
    $("#sp").click(function(){
            alert(′clicked′);
        })
    $("#sp").similar("click");
    //这样刚进入网页即运行点击事件了
    
    事件绑定
    
    $("#sp").bind("click",function(){
            alert(′you click′);
        })
    
    获取鼠标位置
    
     $("#sp").click(function(){
          alert(event.x);
        })
    //event参数可直接支持调用,可以阻止事件冒泡等,不信试试吧
    
  • 相关阅读:
    毕昇编译器优化:Lazy Code Motion
    JavaScript 里三个点 ...,可不是省略号啊···
    Python图像处理丨如何调用OpenCV绘制直方图
    华为云全流程护航《流浪方舟》破竹首发,打造口碑爆款
    游戏开发常遇到数据一致性BUG,怎么解?
    看到这个应用上下线方式,不禁感叹:优雅,太优雅了!
    不止跑路,拯救误操作rm rf /*的小伙儿
    索引设计 《数据库高效优化》 p300
    科学学习法
    读运维MySQL计划有感1 mysql默认索引,mysql执行计划,mysql索引分类
  • 原文地址:https://www.cnblogs.com/hutuzhu/p/3511713.html
Copyright © 2020-2023  润新知