中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

詳解Jquery實(shí)現(xiàn)ready和bind事件
來源:易賢網(wǎng) 閱讀:1208 次 日期:2016-07-08 11:02:52
溫馨提示:易賢網(wǎng)小編為您整理了“詳解Jquery實(shí)現(xiàn)ready和bind事件”,方便廣大網(wǎng)友查閱!

這篇文章主要為大家詳細(xì)介紹了Jquery實(shí)現(xiàn)ready和bind事件的相關(guān)資料,感興趣的小伙伴們可以參考一下

講這一節(jié)之前,先回顧之前一段代碼:

(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]);

          }

        }

        ////這一塊是選擇器的實(shí)現(xiàn),沒有寫完,可以自己實(shí)現(xiàn)

      },

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

上面我們實(shí)現(xiàn)了節(jié)點(diǎn)的查找,今天要講的是對節(jié)點(diǎn)的事件綁定。

熟悉Jquery 源碼的TX應(yīng)該知道:我們上面的代碼少了ready事件,只是針對節(jié)點(diǎn)進(jìn)行查詢,并沒有將document對象考慮進(jìn)去。我之前單獨(dú)講過window.onload和 document. ready的區(qū)別,還對document.ready事件進(jìn)行了擴(kuò)展。

現(xiàn)在我們把擴(kuò)展方法加到這里面:

我們的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]);

             }

           }

         }

       }

這段代碼的大致意思是:如果傳入的參數(shù)selector是function類型,就執(zhí)行ready事件。如果是document就將document對象插入到this.elements數(shù)組里面(這個(gè)傳入之后,會在ready事件里面進(jìn)行判斷)。如果是字符竄,就查詢出節(jié)點(diǎn),循環(huán)插入到this.elements數(shù)組里面,沒什么難度。主要考慮到$(document).ready和$(function(){})這兩種ready事件的寫法。

我們接下來把ready函數(shù)加進(jìn)來:

ready: function (callback) {

        var isDocument = function (ele) {

          var tostring = Object.prototype.toString;

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

        }

        if (isDocument(this.elements[0])) {

          if (document.addEventListener) {

            document.addEventListener('DOMContentLoaded', function () {

              document.removeEventListener('DOMContentLoaded', arguments.callee, false);

              callback();

            }, false);

          }

          else if (document.attachEvent) {

            document.attachEvent('onreadystatechange', function () {

              if (document.readyState == "complete") {

                document.detachEvent('onreadystatechange', arguments.callee);

                callback();

              }

            });

          }

          else if (document.lastChild == document.body) {

            callback();

          }

        }

      }

這段代碼我之前其實(shí)講過了(onload和ready的區(qū)別),不知道的可以看看。

現(xiàn)在ready事件,我們實(shí)現(xiàn)了。然后就可以針對節(jié)點(diǎn)進(jìn)行事件注冊了。

我們來實(shí)現(xiàn)bind函數(shù),代碼如下:

bind: function (type, callback) {

         if (document.addEventListener) {

           this.each(function (i, item) {

             item.addEventListener(type, callback, false);

           });

         }

         else if (document.attachEvent) {

           this.each(function (i, item) {

             item.attachEvent('on' + type, callback);

           });

         }

         else {

           this.each(function (i, item) {

             tem['on' + type] = callback;

           });

         }

       }

這里面都是些兼容性代碼,實(shí)現(xiàn)節(jié)點(diǎn)的事件注冊。之前的each,大家可能不知道是要干嘛的。現(xiàn)在在這里面就用到了。

主要作用是針對節(jié)點(diǎn)循環(huán)做一些操作。

完整代碼,來一份:

(function (win) {

  var _$ = function (selector, context) {

    return new _$.prototype.Init(selector, context);

  }

  _$.prototype = {

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

          }

        }

      }

    },

    each: function (callback) {

      var length = this.elements.length;

      if (length > 0) {

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

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

        }

      }

    },

    ready: function (callback) {

      var isDocument = function (ele) {

        var tostring = Object.prototype.toString;

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

      }

      if (isDocument(this.elements[0])) {

        if (document.addEventListener) {

          document.addEventListener('DOMContentLoaded', function () {

            document.removeEventListener('DOMContentLoaded', arguments.callee, false);

            callback();

          }, false);

        }

        else if (document.attachEvent) {

          document.attachEvent('onreadystatechange', function () {

            if (document.readyState == "complete") {

              document.detachEvent('onreadystatechange', arguments.callee);

              callback();

            }

          });

        }

        else if (document.lastChild == document.body) {

          callback();

        }

      }

    },

    bind: function (type, callback) {

      if (document.addEventListener) {

        this.each(function (i, item) {

          item.addEventListener(type, callback, false);

        });

      }

      else if (document.attachEvent) {

        this.each(function (i, item) {

          item.attachEvent('on' + type, callback);

        });

      }

      else {

        this.each(function (i, item) {

          tem['on' + type] = callback;

        });

      }

    }

  }

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

  window.$ = _$;

})(window);

這幾個(gè)函數(shù)基本上可以實(shí)現(xiàn)對節(jié)點(diǎn)的事件注冊了。其余的一些特效,還需要擴(kuò)展。如果感興趣的話可以自己在  _$.prototype對象里面加方法。

以上就是本文的全部內(nèi)容,希望能夠幫助大家。

更多信息請查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:詳解Jquery實(shí)現(xiàn)ready和bind事件
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2026上岸·考公考編培訓(xùn)報(bào)班

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
精品99视频| 欧美性色aⅴ视频一区日韩精品| 亚洲一级在线观看| 久久免费精品日本久久中文字幕| 午夜综合激情| 欧美日韩和欧美的一区二区| 亚洲麻豆国产自偷在线| 欧美日韩一区二区精品| 亚洲特级毛片| 韩国亚洲精品| 欧美噜噜久久久xxx| 亚洲性夜色噜噜噜7777| 国产深夜精品| 欧美日韩国产一区精品一区| 午夜精品久久久久99热蜜桃导演| 免费不卡在线观看| 亚洲人体一区| 国产欧美va欧美va香蕉在| 免费不卡视频| 亚洲欧美日韩综合国产aⅴ| 在线免费观看视频一区| 国产精品毛片a∨一区二区三区| 亚洲人体偷拍| 国产精品丝袜白浆摸在线| 蜜臀久久99精品久久久久久9| 国产三级精品三级| 欧美福利一区二区| 亚洲欧美国产另类| 亚洲人成艺术| 一区二区三区在线免费观看 | 久久国产色av| 亚洲人人精品| 国内成人在线| 在线视频欧美日韩| 狠狠色综合日日| 国产精品久久久久aaaa九色| 欧美成人亚洲| 久久久精品久久久久| 午夜精品在线看| 亚洲私人影院| 日韩一级精品视频在线观看| 伊人久久亚洲热| 国产精自产拍久久久久久| 欧美日韩国产综合视频在线| 久久中文欧美| 亚洲第一精品福利| 国产婷婷色一区二区三区在线 | 欧美亚韩一区| 欧美黑人多人双交| 久久久午夜电影| 欧美一区二区精品| 在线亚洲一区观看| 99国产精品久久久久久久久久 | 欧美日韩国产成人在线| 欧美一区二区三区啪啪| 亚洲图片欧美一区| 亚洲天堂视频在线观看| 在线中文字幕日韩| 亚洲一区二区免费在线| 亚洲一级高清| 亚洲一区二区三区视频播放| 91久久极品少妇xxxxⅹ软件| 一色屋精品视频免费看| 樱桃国产成人精品视频| 亚洲黄页一区| 99这里只有久久精品视频| 日韩视频在线免费观看| 亚洲精选视频免费看| 亚洲国产裸拍裸体视频在线观看乱了 | 国产精品美女黄网| 国产精品草草| 国产精品成人一区二区网站软件| 亚洲一区二区三区中文字幕在线| 国产精品卡一卡二| 欧美少妇一区二区| 国产精品久久久亚洲一区| 国产精品一二三四区| 国内精品久久久久久久影视蜜臀| 免费成人小视频| 欧美激情第3页| 欧美视频在线一区| 欧美午夜精品久久久久久久| 国产精品久久久久久久久搜平片 | 久久先锋影音av| 久久综合伊人| 欧美日韩国产美| 国产日韩欧美黄色| 亚洲激情av| 亚洲婷婷综合色高清在线| 欧美一区二区三区日韩| 女女同性精品视频| 亚洲午夜精品国产| 亚洲永久网站| 久久久久www| 欧美日韩亚洲国产精品| 国产一区高清视频| 日韩亚洲欧美在线观看| 亚洲综合精品一区二区| 久久在线视频在线| 欧美日韩国产精品一区| 国产亚洲福利| 正在播放亚洲一区| 久久在线视频| 国产视频一区在线| 日韩视频不卡中文| 久久女同互慰一区二区三区| 欧美人与禽性xxxxx杂性| 韩国精品久久久999| 亚洲已满18点击进入久久| 免费亚洲婷婷| 国产综合欧美| 午夜国产精品视频免费体验区| 国产精品99久久99久久久二8| 亚洲韩国精品一区| 亚洲一区二区三区精品动漫| 久久天天躁夜夜躁狠狠躁2022| 久久久久久成人| 国产精品扒开腿做爽爽爽软件| 你懂的网址国产 欧美| 国产精品自拍三区| 在线视频精品一区| 欧美成人激情在线| 亚洲免费在线视频| 欧美日韩在线观看视频| 亚洲三级影院| 欧美超级免费视 在线| 黄色小说综合网站| 久久视频在线免费观看| 有坂深雪在线一区| 久久综合色88| 蜜桃精品一区二区三区| 亚洲另类黄色| 一区二区三区波多野结衣在线观看| 激情综合五月天| 久久本道综合色狠狠五月| 国产精品成人在线观看| 在线一区二区日韩| 国产精品分类| 亚洲综合视频在线| 国产日韩在线视频| 欧美中文字幕久久| 国产日本亚洲高清| 久久精品国产96久久久香蕉| 韩日精品在线| 久久综合伊人77777麻豆| 99成人精品| 欧美成人网在线| 国产精品久久激情| 一区二区三区日韩精品| 欧美日韩综合不卡| 亚洲永久在线观看| 国产乱子伦一区二区三区国色天香| 夜色激情一区二区| 国产日韩欧美精品一区| 一区二区三区色| 老鸭窝毛片一区二区三区| 狠狠色综合网站久久久久久久| 欧美亚洲一区二区在线| 国产精品女主播| 国产精品99久久99久久久二8| 久久电影一区| 国产一区二区三区久久久| 久久综合影音| 亚洲美女黄网| 国产精品一区二区三区久久| 久久久99免费视频| 91久久综合亚洲鲁鲁五月天| 欧美视频精品一区| 久久精品官网| 亚洲欧洲日本国产| 国产精品男gay被猛男狂揉视频| 亚洲第一网站| 欧美日韩99| 国产一区二区三区四区五区美女| 在线视频你懂得一区二区三区| 久久久福利视频| 国内精品久久久久久久影视蜜臀 | 夜夜嗨av色一区二区不卡| 欧美视频手机在线| 久久精品中文字幕一区| 91久久午夜| 国产一区二区三区日韩欧美| 欧美日韩成人一区二区三区| 久久久精品免费视频| 亚洲视屏在线播放| 美国十次成人| 亚洲高清视频在线观看| 久久av红桃一区二区小说| 国产欧美二区| 久久综合99re88久久爱| 亚洲激情视频| 欧美性事免费在线观看| 国产精品网站在线| 欧美亚洲在线| 亚洲国产欧美一区| 欧美天堂亚洲电影院在线观看| 亚洲香蕉成视频在线观看| 国产精品在线看| 国产精品一区二区在线| 欧美激情精品久久久久久黑人|