首頁 > web前端 > js教程 > 主體

深入理解jQuery中live與bind方法的差異_jquery

WBOY
發布: 2016-05-16 17:08:34
原創
942 人瀏覽過

注意如果是透過jq加入的層和物件一定要用live(),用其他的都不行

live的缺點就是,運行完以後不釋放空間,太多的使用會佔用更多的內存,bind()則點擊完以後釋放空間

區別一:

Click here

可以為這個元素綁定一個簡單的click事件:

$('.clickme').bind('click', function() {
$('body').append('

Another target
');
});

當點擊了元素,就會彈出一個警告框。然後,想像一下這之後有另一個元素添加進來了。

儘管這個新的元素也能夠匹配選擇器 ".clickme" ,但是由於這個元素是在調用 .bind() 之後添加的,所以點擊這個元素不會有任何效果。

.live() 就提供了對應這種情況的方法。如果我們是這樣綁定click事件的:

$('.clickme').live('click', function() {
alert("Live handler called.");
});

然後再增加一個新元素:

$('body').append('

Another target
');

然後再點選新增的元素,他依然能夠觸發事件處理函數。

 

區別二:

(1)bind方法可以綁定任何JavaScript的事件,而live方法在jQuery1.3的時候只支援click, dblclick, keydown, keypress,keyup,mousedown, mousemove, mouseout, mouseover, 和mouseup.在jQuery 1.4.1中,甚至也支援focus 和blue事件了(映射到更合適,並且可以冒泡的focusin和focusout上)。另外,在jQuery 1.4.1中,也能支援hover(映射到"mouseenter mouseleave")。

(2)live() 並不完全支援透過DOM遍歷的方法找到的元素。取而代之的是,應當總是在一個選擇器後面直接使用 .live()方法。

(3)當一個元素採用live方法進行事件的綁定的時候,如果想阻止事件的傳遞或冒泡,就要在函數中return false,僅僅調用stopPropagation()是無法實現阻止事件的傳遞或冒泡的

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板