javascript代码实例教程-Jquery揭秘系列:实现 ready和bind事件

发布时间:2019-02-14 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-Jquery揭秘系列:实现 ready和bind事件脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 讲这一节之前,先回顾之前的一篇《小谈jquery》里面的代码:

 

    (function (win) {

            VAR _$ = function (selector, context) {

                return new _$.PRototyPE.InIT(selector, context);

            }

            _$.prototype = {

                Init: function (selector, context) {

                    this.elements = [];

                    var context = context || document;

                    if (context.querySelectorAll) {

                        var arr = context.querySelectorAll(selector);

                        for (var i = 0; i < arr.length; i++) {

                            this.elements.push(arr[i]);

                        }

                    }

                    ////这一块是选择器的实现,没有写完,可以自己实现

                },

                each: function (callback) {

                    if (this.elements.length > 0) {

                        for (var i = 0; i < this.elements.length; i++) {

                            callback.call(this, i, this.elements[i]);

                        }

                    }

                }

            }

            _$.prototype.Init.prototype = _$.prototype;

            window.$ = _$;

        })(window || global);

 

上面我们实现了节点的查找,今天要讲的是对节点的事件绑定

 

熟悉Jquery 码的TX应该知道:我们上面的代码少了ready事件,只是针对节点进行查询,并没有将document对象考虑进去。我之前单独讲过window.onload和 document. ready的区别,还对document.ready事件进行了扩展。

 

现在我们把扩展方法加到这里面:

 

我们的Init方法要改正一下:

 

 

 Init: function (selector, context) {

                    this.elements = [];

                    if (typeof selector === "function") {

                        this.elements.push(document);

                        this.ready(selector);

                    }

                    else {

                        var context = context || document;

                        var isDocument = function (ele) {

                            var tostring = Object.prototype.toString;

                            return tostring.call(ele) == "[object HTMLDocument]" | "[object Document]";

                        }

                        if (isDocument(selector)) {

                            this.elements.push(selector);

                        }

                        else if (context.querySelectorAll) {

                            var arr = context.querySelectorAll(selector);

                            for (var i = 0; i < arr.length; i++) {

                                this.elements.push(arr[i]);

                            }

                        }

                    }

                }

 

这段代码的大致意思是:如果传入的参数selector是function类型,就执行ready事件。如果是document就将document对象插入到this.elements数组里面(这个传入之后,会在ready事件里面进行判断)。如果是字符窜,就查询出节点,循环插入到this.elements数组里面,没什么难度。主要考虑到$(document).ready和$(function(){})这两种ready事件的写法。

 

我们接下来把ready函数加进来:

 

 View Code

这段代码我之前其实讲过了(onload和ready的区别),不知道的可以看看。

 

现在ready事件,我们实现了。然后就可以针对节点进行事件注册了。

 

我们来实现bind函数,代码如下:

 

 View Code

这里面都是些兼容性代码,实现节点的事件注册。之前的each,大家可能不知道是要干嘛的。现在在这里面就用到了。

 

主要作用是针对节点循环做一些操作。

 

完整代码,来一份:

 

 View Code

这几个函数基本上可以实现对节点的事件注册了。其余的一些特效啥的,还需要扩展。如果感兴趣的话可以自己在  _$.prototype对象里面加方法。

 

如果有疑问或者意见的TX直接留言吧。反正大家是互相学习,互相交流。

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-Jquery揭秘系列:实现 ready和bind事件全部内容,希望文章能够帮你解决javascript代码实例教程-Jquery揭秘系列:实现 ready和bind事件所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。