极速快3大小投注技术|最新极速快3开奖结果

jquery綁定設計

導語 jquery綁定設計提到jQuery的事件,不得不提一下 Dean Edwards大神 addEvent 庫,很多流行的類庫的基本思想從他那兒借來的。jQuery的事件處理機制吸取了 JavaScript 專家 Dean Edwards 編寫的事件處理函

jquery綁定設計

提到jQuery的事件,不得不提一下 Dean Edwards大神 addEvent 庫,很多流行的類庫的基本思想從他那兒借來的。jQuery的事件處理機制吸取了 JavaScript 專家 Dean Edwards 編寫的事件處理函數的精華,使得jQuery處理事件綁定的時候相當的可靠。在預留退路(graceful degradation),循序漸進以及非入侵式編程思想方面,jQuery 也做的非常不錯。總的來說對于 jQuery 的事件綁定做了 2 大塊的處理:

在綁定的時候做了包裝處理 在執行的時候有過濾器處理

看看 API 的參數:

.on( events [, selector ] [, data ], handler(eventObject) )
  1. events:事件名
  2. selector : 一個選擇器字符串,用于過濾出被選中的元素中能觸發事件的后代元素
  3. data :當一個事件被觸發時,要傳遞給事件處理函數的
  4. handler : 事件被觸發時,執行的函數

用來綁定一個事件:

var body = $('body')
body.on('click','p',function(){
    console.log(this)
})

用 on 方法給 body 上綁定一個 click 事件,冒泡到 p 元素的時候才出發回調函數,這里大家需要明確一點:

每次在body上點擊其實都會觸發事件,但是只目標為p元素的情況下才會觸發回調的處理函數。通過源碼不難發現on方法實質只完成一些參數調整的工作,而實際負責事件綁定的是其內部 jQuery.event.add方法

看看綁定的實際接口on的代碼:

on: function(types, selector, data, fn, /*INTERNAL*/ one) {
  //省略部分代碼
  return this.each(function() {
    jQuery.event.add(this, types, fn, data, selector);
  });
}

 jQuery.event.add內部實際上最終還是通過addEventListener綁定的事件

\

(單擊圖片可放大)

其中一些變量代碼的意思:

  1. elem: 目標元素
  2. type: 事件類型,如’click’
  3. eventHandle: 事件句柄,也就是事件回調處理的內容了
  4. false: 冒泡
  5. elem: 目標元素type: 事件類型,如’click’eventHandle: 事件句柄,也就是事件回調處理的內容了false: 冒泡

現在我們把之前的案例給套一下看看:

var body = document.getElementsByTagName('body')
var eventHandle = function() {
    console.log(this)
}
body.addEventListener('click', eventHandle, false);

如果是我們自己實現的這個代碼是有問題的,我們在body上每次都觸發了click事件,但是我們并沒有委托的p元素的處理,自然也達不到委托的效果。

eventHandle源碼

回到內部綁定的事件句柄 eventHandle ,可想而知 eventHandle 不僅僅只是只是充當一個回調函數的角色,而是一個實現了 EventListener 接口的對象。

if (!(eventHandle = elemData.handle)) {
    eventHandle = elemData.handle = function(e) {
        return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?
            jQuery.event.dispatch.apply(elem, arguments) : undefined;
    };
}

可見在 eventHandle 中并沒有直接處理回調函數,而是映射到 jQuery.event.dispatch 分派事件處理函數了僅僅只是傳入 eventHandle.elem,arguments , 就是 body 元素 與事件對象那么這里有個問題,事件回調的句柄并沒有傳遞過去,后面的代碼如何關聯?本章的一些地方可能要結合后面的 dispatch 處理才能清理,但是我們還是先看看做了那些處理。

一個簡單的流程圖:

\


http://www.hlwom.icu/ true jquery綁定設計 http://www.hlwom.icu/show-13-609-1.html report 1752 jquery綁定設計提到jQuery的事件,不得不提一下 Dean Edwards大神 addEvent 庫,很多流行的類庫的基本思想從他那兒借來的。jQuery的事件處理機制吸取了 JavaScript 專家 Dean Edwards 編寫的事件處理函
TAG:jquery
本站歡迎任何形式的轉載,但請務必注明出處,尊重他人勞動成果
轉載請注明: 文章轉載自:愛思資源網 http://www.hlwom.icu/show-13-609-1.html

[前端插件推薦] Plugin

1 2 3 4
  • jQuery實現逐字逐句顯示插件l-by-l.min.js
  • jQuery帶方向感知的鼠標滑過圖片邊框特效插件
  • jQuery HotKeys監聽鍵盤按下事件keydown插件
  • 響應式無限輪播jQuery旋轉木馬插件
響應式無限輪播jQuery旋轉木馬插件
web前端開發
愛思資源網 Copyright 2012-2014 www.hlwom.icu All rights reserved.(晉ICP備13001436號-1)
极速快3大小投注技术 兴發国际娱乐 3d试机号开奖号历史统计 七星彩专家荐号 广东十一选五 中国竞彩网胜平负 足彩竞彩直播 河南十一选五走资图 河南22选5基本走势图 江西时时彩走势图号码 最新时时源码出售