只要一提到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...