1.live事件說明javascript
jQuery1.3增長了一個live()方法,下面是手冊上的說明:java
jQuery 1.3中新增的方法。給全部當前以及未來會匹配的元素綁定一個事件處理函數(好比click事件)。也能綁定自定義事件。jquery
目前支持 click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, keydown, keypress, keyup。函數
還不支持 blur, focus, mouseenter, mouseleave, change, submit性能
與bind()不一樣的是,live()一次只能綁定一個事件。spa
這個方法跟傳統的bind很像,區別在於用live來綁定事件會給全部當前以及未來在頁面上的元素綁定事件(使用委派的方式)。好比說,若是你給頁面上全部的li用live綁定了click事件。那麼當在之後增長一個li到這個頁面時,對於這個新增長的li,其click事件依然可用。而無需從新給這種新增長的元素綁定事件。插件
.live()與流行的liveQuery插件很像,但有如下幾個主要區別:blog
- .live 目前只支持全部事件的子集,支持列表參考上面的說明。
- .live 不支持liveQuery提供的「無事件」樣式的回調函數。.live只能綁定事件處理函數。
- .live 沒有」setup」和」cleanup」的過程。由於全部的事件是委派而不是直接綁定在元素上的。
要移除用live綁定的事件,請用die方法seo
用法示例:事件
<div class=」myDiv」></div>
jquery:
$(「.myDiv」).live(「click」, function(){
alert(「clicked!」);
});
若是使用javascript動態建立一個class爲mydiv的元素,點擊元素依然會有彈出。爲何使用live後就有了呢?這是由於jquery利用了事件的冒泡機制,直接把事件綁定在了document上,而後經過event.target找出事件的來源。這跟jquery.livequery插件不同,jquery.livequery每20毫秒作一次檢查,若有新生成則從新綁定一次事件。
使用live固然有利也有弊:
好處就是:元素更新時不用反覆去定義事件。
壞處就是:把事件綁定在document上會在頁面上每個元素都呼叫一次,如使用不當會嚴重影響性能。並且不支持blur, focus, mouseenter, mouseleave, change, submit。
2.移除live綁定的事件
在Jquery裏,使用live來綁定事件,若想移除該事件,要使用die方法。
如:
$(「.myDiv」).die("click");
這樣就好將綁定的click事件移除掉。