zoukankan      html  css  js  c++  java
  • 原生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参数可直接支持调用,可以阻止事件冒泡等,不信试试吧
    
  • 相关阅读:
    火狐浏览器修改userAgent
    清除linux缓存命令
    linux主机间复制文件
    解决两台centos虚拟机Telnet服务无法联机的问题
    Install Redis on CentOS 6.4--转
    解决 ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)异常
    主机访问虚拟机中linux上的web服务
    How can I exclude directories from grep -R?
    RPM安装命令总结--转载
    centos mongodb安装及简单实例
  • 原文地址:https://www.cnblogs.com/hutuzhu/p/3511713.html
Copyright © 2011-2022 走看看