您现在的位置是:主页 > news > 无锡seo网站推广费用/百度下载安装官方下载

无锡seo网站推广费用/百度下载安装官方下载

admin2025/5/14 1:10:52news

简介无锡seo网站推广费用,百度下载安装官方下载,个人怎样做网站,建设银行网站电脑上不去“ 相信大家都用过JQuery库编写过js代码,不过我就比较好奇JQ的本身是什么,是如何用一个$就能实现一系列的操作的。然后我仔细的阅读了JQ源码,还是有所收获的,并发现了一些她的写法,接下来我把我自己仿照JQ编写的文件给…

无锡seo网站推广费用,百度下载安装官方下载,个人怎样做网站,建设银行网站电脑上不去“ 相信大家都用过JQuery库编写过js代码,不过我就比较好奇JQ的本身是什么,是如何用一个$就能实现一系列的操作的。然后我仔细的阅读了JQ源码,还是有所收获的,并发现了一些她的写法,接下来我把我自己仿照JQ编写的文件给…

 相信大家都用过JQuery库编写过js代码,不过我就比较好奇JQ的本身是什么,是如何用一个$就能实现一系列的操作的。然后我仔细的阅读了JQ源码,还是有所收获的,并发现了一些她的写法,接下来我把我自己仿照JQ编写的文件给展示出来,有兴趣的同学可以跟着做做。

废话不多说,直接上代码展示(代码有点长,请耐心读完)

01

编写代码,吃透原理

//使用闭包,//匿名函数自执行避免变量全局污染(function(){        function jQuery(selector){            return new jQuery.prototype.init(selector)        }        jQuery.prototype.version = "2.0";        jQuery.prototype.init = function(selector){      //传过来的变量类型            var str  = typeof selector;      //如果是函数,直接执行ready方法  (等价于jq的懒加载)            if(str === "function"){                jQuery.ready(selector);            }else if(str === "object"){    //如果是对象,直接把长度和对象定义( 等价于$(this) )                this.length = 1;                this[0] = selector;            }else{        //如果是其他直接选择dom  (等价于$("#id")  $(".class")  $("tagname"))                var elems = document.querySelectorAll(selector);                this.length = elems.length;                for(var i=0; i                    this[i] = elems[i];                }            }            return this;        }        //给jQuery的原型加入each方法        jQuery.prototype.each = function(fn){            for(var i=0; i<this.length; i++){                fn(this[i])            }            return this;        }        //添加类        jQuery.prototype.addClass=function(val){            this.each(function(item){                item.classList.add(val);            })            return this;        }        //删除类        jQuery.prototype.removeClass = function(val){            this.each(function(item){                item.classList.remove(val);            })            return this;        }        //添加、删除类        jQuery.prototype.toggleClass = function(val){            this.each(function(item){                item.classList.toggle(val);            })            return this;        }        //添加点击事件        jQuery.prototype.on = function(type,fn){            this.each(function(elem){                elem.addEventListener(type,fn)            })            console.log(this)            return this;        }        //判断是否加载完毕        jQuery.ready = function(fn){            if(jQuery.isReady){                //如果已经ready,执行回调函数fn                fn();            }else{                //不然等待10毫秒再次执行                setTimeout(function(){                    jQuery.ready(fn);                },10)            }        }        //等dom加载完成以后再执行,避免事件绑定无效        document.addEventListener("DOMContentLoaded",function(){            //如果dom加载完成,定义变量isReady = true            jQuery.isReady = true;        })        //把jQuery的prototype赋值给jQuery.prototype.init.prototype  然后每个init实例($)都可以访问所有方法        //把jQuery的原型里的所有属性和方法赋值给init的原型        jQuery.prototype.init.prototype = jQuery.prototype;        //把jQuery变成window变量,从而实现全局调用        window.$ = window.jQuery = jQuery;        })()

02

引入文件,动手实践

经过这一波操作后,JQuery的基本功能就全实现了,使用的话就和JQuery一样,用script标签引入就行,我们来用控制台查看一下效果

a0419208c0f1dd81261d8acad93d7240.png

怎么样是不是很简单呢 看都看完了,点个赞再走呗

aebfba5476f7714c479536c7ad78b7dd.png