博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自己写一个jquery
阅读量:6365 次
发布时间:2019-06-23

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

通过阅读jquery原代码, 我们可以模拟写一个简单的jquery

比如常用的

jQuery("div").css("color","red");

jQuery("#span1").css("color","green");
 

1. jQuery(), 因为是链式调用, 所以返回是一个对象。

jQuery = function(selector){            return new jQuery.prototype.init(selector);        }        jQuery.prototype = {            constructor:jQuery,            init:function(selector){                this.elements = document.querySelectorAll(selector);            },            css:function(key, value){            ......            }        }

 此时,this.elements为所有合条件的html elements

2. css(), 对所有合适条件的element设置样式。

css:function(key, value){                this.elements.forEach(element => {                    element.style[key] = value;                });            }

 3. 此时,css是访问不了this.elements的。 因为this.elements是在init定义,并且init是构造函数。所以this.elements是init实例里面的属性。

jQuery.prototype.init.prototype=jQuery.prototype;

 这样 css()就能访问this.elements.

完整代码

jQuery = function(selector){            return new jQuery.prototype.init(selector);        }        jQuery.prototype = {            constructor:jQuery,            init:function(selector){                this.elements = document.querySelectorAll(selector);            },            css:function(key, value){                this.elements.forEach(element => {                    element.style[key] = value;                });            }        }        jQuery.prototype.init.prototype=jQuery.prototype;

 最后起个别名

jQuery.fn=jQuery.prototype

jQuery = function(selector){            return new jQuery.fn.init(selector);        }        jQuery.fn = jQuery.prototype = {            constructor:jQuery,            init:function(selector){                this.elements = document.querySelectorAll(selector);            },            css:function(key, value){                this.elements.forEach(element => {                    element.style[key] = value;                });            }        }        jQuery.fn.init.prototype=jQuery.fn;

测试一下。

    My jquery    
div 1
div 2
span 1

 

转载于:https://www.cnblogs.com/Ivan83/p/9136390.html

你可能感兴趣的文章
Windows无法删除文件 提示找不到该项目怎么办
查看>>
js 数组
查看>>
R语言中的字符串处理函数
查看>>
平方和公式
查看>>
【Unity游戏开发】浅谈 NGUI 中的 UIRoot、UIPanel、UICamera 组件
查看>>
内存模型
查看>>
table边框设置
查看>>
IOS开发之实现App消息推送(最新)
查看>>
C++ 资源管理之 RAII
查看>>
UVA11234 Expressions
查看>>
(原創) char s[]字串和char *s字串有什麼差別? (C/C++) (C)
查看>>
(原創) 如何讓泛型支援多個interface? (.NET) (C/C++) (C#) (template) (C++/CLI)
查看>>
(筆記) 如何使用$skew? (SOC) (Verilog)
查看>>
信息系统开发平台OpenExpressApp - AutoUI自动生成界面
查看>>
(筆記) 如何使ModelSim與nLint並存? (SOC) (ModelSim) (nLint)
查看>>
linux 2.6.32 在arm9(s3c2440)平台的移植 - 标题要长(1)
查看>>
Android Layout XML属性
查看>>
C#操作配置文件
查看>>
WCF实例上下文模式与并发模式对性能的影响
查看>>
【C#学习笔记】窗口隐藏、最小化、最大化、正常化
查看>>