jquery bind、delegate、live、on的區別及聯繫

jquery bind、delegate、live、on的區別及聯繫

概述

jquery提供了好幾個API均可以實現事件綁定, 如 delegate, live , bind 等, 但是有沒有疑惑這幾個API之間有什麼區別和聯繫呢?html

其實 .delegate, .live, .on這三個都API能夠事先事件綁定,只不過有一點稍微的不一樣點。他們屬於jQuery不一樣時期的同一個功能的不一樣名稱實現。若是jQ版本大於1.7,建議使用.on 能夠保證向上兼容。查看jquery源碼知道, jquery不少地方都是使用on處理事件綁定的。jquery

分析

delegate
jquery1.4.2及其以上版本;函數

delegate() 爲指定的元素(被選元素的子元素)添加一個或多個事件處理程序,
並規定當這些事件發生時運行的函數。
使用 delegate() 方法的事件處理程序適用於當前或將來的元素(好比由腳本建立的新元素)性能

bind
適用全部版本,可是根據官網解釋,自從jquery1.7版本之後bind()函數推薦用on()來代替。.net

bind()向匹配元素添加一個或多個事件處理器。代理

live
jquery1.9版本如下支持,jquery1.9及其以上版本刪除了此方法,jquery1.9以上版本用on()方法來代替。code

live() 向當前或將來的匹配元素添加一個或多個事件處理器htm

on
jquery1.7及其以上版本;jquery1.7版本出現以後用於替代bind(),live()綁定事件方式;blog

on() 爲指定的元素,添加一個或多個事件處理程序,並規定當這些事件發生時運行的函數。使用 on() 方法的事件處理程序適用於當前或將來的元素(好比由腳本建立的新元素)。事件

區別及聯繫

相同點:

1.都支持單元素多事件的綁定;空格相隔方式或者大括號替代方式;
2.均是經過事件冒泡方式,將事件傳遞到document進行事件的響應;

不一樣點:

1.bind()函數只能針對已經存在的元素進行事件的設置;可是live(),on(),delegate()均支持將來新添加元素的事件設置

2.bind()函數在jquery1.7版本之前比較受推崇,1.7版本出來以後,官方已經不推薦用bind(),替代函數爲on(),這也是1.7版本新添加的函數,一樣,能夠用來代替live()函數,live()函數在1.9版本已經刪除;

3.live()函數和delegate()函數二者相似,可是live()函數在執行速度,靈活性和CSS選擇器支持方面較delegate()差些,想了解具體狀況

4.bind()支持Jquery全部版本;live()支持jquery1.8-;delegate()支持jquery1.4.2+;on()支持jquery1.7+;

事件綁定方式

.bind()是直接綁定在元素上
.live()則是經過冒泡的方式來綁定到元素上的。更適合列表類型的,綁定到document DOM節點上。和.bind()的優點是支持動態數據。
.delegate()則是更精確的小範圍使用事件代理,性能優於.live()
.on()則是最新的1.9版本整合了以前的三種方式的新事件綁定機制

取消事件綁定

delegate 對應 undelegate
live 對應 die
bind 對應 unbind
on 對應 off

具體用法參考jQuery手冊

參考
http://www.cnblogs.com/xilipu31/p/4105794.html
http://blog.csdn.net/panfang/article/details/21705681

相關文章
相關標籤/搜索