博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
原生js模拟jquery写法
阅读量:5774 次
发布时间:2019-06-18

本文共 2884 字,大约阅读时间需要 9 分钟。

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);        }    }}

 

使用方法介绍样式处理
test
test
test
事件处理//支持的事件在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参数可直接支持调用,可以阻止事件冒泡等,不信试试吧

 

转载于:https://www.cnblogs.com/hutuzhu/p/3511713.html

你可能感兴趣的文章
微软向Linux社区开放60000多项专利:对开源微软是认真的
查看>>
版本控制、Git及其在企业中的应用
查看>>
Ruby开发者已可通过Fog管理Microsoft Azure服务
查看>>
《Doing It - Management 3.0 Experiences》作者访谈
查看>>
基于 Bitbucket Pipeline + Amazon S3 的自动化运维体系
查看>>
Hoshin Kanri在丰田的应用
查看>>
又拍云沈志华:如何打造一款安全的App
查看>>
MySQL · B+树并发控制机制的前世今生
查看>>
Git 2.20的重大更新:侧重可用性和性能
查看>>
华为吴晟:分布式监控系统的设计与实现
查看>>
Nginx 学习书单整理
查看>>
Taro 1.1 全面支持微信/百度/支付宝小程序了!
查看>>
加州无人车报告出炉,苹果表现垫底,国产车进前五
查看>>
红帽收购混合云管理提供商NooBaa,混合云爆发节点临近!
查看>>
测试计划驱动开发模式TPDD:一种比TDD更友好的开发模式
查看>>
微软发布UWP Bridge项目将一切应用转为Windows应用
查看>>
战胜阿里和腾讯,Ripple已经获得200家跨境支付客户!
查看>>
Facebook如何重新设计HHVM JIT编译器的性能
查看>>
CentOS6.X下Gogs安装与配置
查看>>
js/jQuery中单选框、下拉框的取值、设置
查看>>