JQuery中4種事件繫結的區別

2021-07-22 08:08:34 字數 1360 閱讀 1491

只要一提到jquery事件的繫結,第一時間就會想起bind()方法。孤陋寡聞的我今天聽同事提起,才來自己研究了下,發現共有四種事件繫結的方法,分別是:bind(),live(),delegate()和on()。

它們的使用方法都大同小異都是(我用fn代表繫結事件的方法) $(selecter)fn(event,data,fn),還可以一對多的繫結,也就是乙個jquery物件繫結多個事件及其處理函式,如:$(selecter).fn()多事件處理我們就用json格式來寫。

我們先來看它們適用的版本:

bind()-------------------------版本號小於3.0(在jquery3.0中已經移除,相應unbind()也移除)

live()--------------------------版本號小於1.7

(在jquery1.7中已經移除,相應die()也移除)

delegate()-------------------版本號小於1.7

(在jquery1.7中已經移除)

on()---------------------------版本號大於1.7

(在jquery1.7中新增,相應off()也新增)

除了上述方法如果你想繫結一次的話還可以用one()方法;

trigger()也有繫結事件的效果。

也就是說如果你行用最新的jquery繫結事件只能夠使用on().

下面我們來看看他們都有什麼區別:

第乙個最大的區別就是:bind()的事件繫結是只對當前頁面選中的元素有效。如果你想對動態建立的元素bind()事件,是沒有辦法達到效果的,而其餘三個可以。看例子:

add div

del div

繫結事件

解綁事件

我是原生div

tips:上面我用到的remove()方法,是$(element).remove(" id/class")

例如我要移除id名為x的div:$("div").remove("#x");

例如我要移除class名為y的第乙個div:$("div").remove(".y:first");

官方用on()取締其餘三種方法的原因可能是出於效能的考慮:

bind的缺點很明顯

畢竟on()方法有4個引數可選,分別是events|selecter|data|fn,其中selecter是其它繫結方法不具備的,原來我們的事件events只能委派給document,如果你需要繫結的dom目標巢狀在很深的dom結構中,那麼讓document去派發事件我想是非常不明智的,我們用on()就可以找到要繫結的目標元素的父級,並委派它事件,這樣事件的派發就變得輕鬆很多。

第一次寫東西,也並不是要教別人什麼的,只是想讓自己記住。

JQuery中的事件繫結

事件冒泡 在乙個物件上觸發某類事件 比如單擊onclick事件 如果此物件定義了此事件的處理程式,那麼此事件就會呼叫這個處理程式,如果沒有定義此事件處理程式或者事件返回true,那麼這個事件會向這個物件的父級物件傳播,從裡到外,直至它被處理 父級物件所有同類事件都將被啟用 或者它到達了物件層次的最頂...

jQuery中的事件繫結

在頁面載入完畢時,程式可以通過為元素繫結事件完成相應的操作。在jquery中,事件繫結通常可以分為為元素繫結事件 移除繫結和繫結一次性事件處理3種情況,下面分別進行介紹。一 為元素繫結事件 在jquery中,為元素繫結事件可以使用bind 方法,該方法的語法結構如下 bind type,data f...

jQuery中的事件繫結

在頁面載入完畢時,程式可以通過為元素繫結事件完成相應的操作。在jquery中,事件繫結通常可以分為為元素繫結事件 移除繫結和繫結一次性事件處理3種情況,下面分別進行介紹。一 為元素繫結事件 在jquery中,為元素繫結事件可以使用bind 方法,該方法的語法結構如下 bind type,data f...