亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

章節
問答
課簽
筆記
評論
占位
占位

事件接口

jQuery事件處理機制能幫我們處理那些問題?

毋容置疑首先要解決瀏覽器事件兼容問題:

1. 可以在一個事件類型上添加多個事件處理函數,可以一次添加多個事件類型的事件處理函數
2. 提供了常用事件的便捷方法
3. 支持自定義事件
4. 擴展了組合事件
5. 提供了統一的事件封裝、綁定、執行、銷毀機制

……

為了更深入的理解幕后的實現,所以先整理整體的結構思路,從1.7后就去除了 live 綁定,所以現在的整個事件的 API

如圖:

jQuery的事件綁定有多個方法可以調用,以 click 事件來舉例:

$('#foo').click(function(){ })
$('#foo').bind('click',function(){ })
$("foo").delegate("td", "click", function() { })
$("foo").on("click", "td", function() { })

click,bind,delegate,on方法,以上四種綁定都能達到同一樣的效果,但是各自又有什么區別,內部又是如何實現?

源碼分析

click方式

jQuery.fn[ 'click' ] = function( data, fn ) {
    return arguments.length > 0 ?
         this.on( name, null, data, fn ) :
         this.trigger( name );
};

源碼很簡單,合并15種事件統一增加到jQuery.fn上,內部調用this.on / this.trigger。

bind方式

bind: function( types, data, fn ) {
    return this.on( types, null, data, fn )
}

同樣調用的this.on/this.off。

delegate方式

delegate: function( selector, types, data, fn ) {
    return this.on( types, selector, data, fn )
}

同樣調用的this.on/this.off。

one方式

one: function( types, selector, data, fn ) {
    return this.on( types, selector, data, fn, 1 )
}

可見以上的接口只是修改了不同的傳遞參數,最后都交給 on 實現的。

任務

?不會了怎么辦
||

提問題

寫筆記

公開筆記
提交
||

請驗證,完成請求

由于請求次數過多,請先驗證,完成再次請求

加群二維碼

打開微信掃碼自動綁定

您還未綁定服務號

綁定后可得到

  • · 粉絲專屬優惠福利
  • · 大咖直播交流干貨
  • · 課程更新,問題答復提醒
  • · 賬號支付安全提醒

收藏課程后,能更快找到我哦~

使用 Ctrl+D 可將課程添加到書簽

邀請您關注公眾號
關注后,及時獲悉本課程動態

舉報

0/150
提交
取消
全部 精華 我要發布
全部 我要發布
最熱 最新
只看我的

手記推薦

更多

本次提問將花費2個積分

你的積分不足,無法發表

為什么扣積分?

本次提問將花費2個積分

繼續發表請點擊 "確定"

為什么扣積分?