防止事件重復綁定共有4種方法:
- bind()、unbind()方法
- live()、die()方法
- off()、on()方法
- one()方法
bind();綁定事件
為被選元素添加一個或多個事件處理程序,並規定事件發生時運行的函數。
從某種角度上講,bind("click",function(){})與click(function(){})是等價的。
unbind();移除通過bind()方法添加的事件
不僅僅對於bind()方法有效,它對於click()方法同樣有效。
$("#btn1").unbind("click").bind("click",function(){ alert("我是btn1!"); });
$("#btn1").unbind().click(function(){ alert("我是btn1!"); });
二、live()、die()方法
live();
jQuery1.3增加了一個live()方法,給所有當前以及將來會匹配的元素綁定一個事件處理函數。
支持:click,dblclick, mousedown, mouseup等。
不支持 :blur, focus, mouseenter, mouseleave, change, submit。
live()一次只能綁定一個事件。
jquery利用了事件的冒泡機制,直接把事件綁定在了document上,然后通過event.target找出事件的來源。
要移除用live綁定的事件,請用die()方法
die();
在jquery里,使用live()來綁定事件,若想移除該事件,要使用die()方法。
$("#btn1").die("click").live("click",function() { alert("我是btn1!"); });
三、off()、on()方法
on();綁定事件。
從jQuery 1.7開始,on()函數提供了綁定事件處理程序所需的所有功能,用於統一取代以前的bind()、 delegate()、 live()等事件函數。
即使是執行on()函數之后新添加的元素,只要它符合條件,綁定的事件處理函數也對其有效。
該函數可以為同一元素、同一事件類型綁定多個事件處理函數。觸發事件時,jQuery會按照綁定的先后順序依次執行綁定的事件處理函數。
要刪除通過on()綁定的事件,請使用off()函數。
如果要附加一個事件,只執行一次,然后刪除自己,請使用one()函數。
off();解除綁定事件
off()函數用於移除元素上綁定的一個或多個事件的事件處理函數。
off()函數主要用於解除由on()函數綁定的事件處理函數。
on();函數和off();函數的返回值都為jQuery類型,返回當前jQuery對象本身。
$("#btn1").off("click").on("click",function(){ alert("我是btn1!"); });
綁定的事件處理函數只會執行一次。
$("#btn1").one("click",function(){ alert("我只執行一次!"); });