摘要:但是當(dāng)我們點(diǎn)擊新添加的元素也就是時,卻沒有把這個加給它。它的原理是利用事件冒泡最終代理給最頂層的。對于動態(tài)生成的元素也生效因?yàn)槠鋵?shí)是綁定在上的。
假設(shè)我們有這樣一段html:
1: .bind()
.bind方法的用法是這樣的:targetElment.bind("eventType", eventHandler)
所以假入我們要給
$(document).ready(function(){ $(".bookList li").bind("click", function(event){ $(this).addClass("red"); }) $("button").bind("click", function(event){ $(".bookList").append("
最開始只有兩個
1: 對于動態(tài)添加的元素不會綁定事件 2: 它會給每一個滿足條件的dom元素都綁定這個eventHandler 3: 它會帶來性能問題 4: 對應(yīng)解綁方法為:.unbind()
2: .live()
.live方法的用法是這樣的:targetElment.live("eventType", eventHandler)
live()的寫法和bind是一樣,但是它們的功能和實(shí)現(xiàn)原理卻不一樣,不同點(diǎn)有:
1: live()把eventHandler綁定在document上,而不是某個特定的元素節(jié)點(diǎn)上。它的原理是利用事件冒泡最終代理給最頂層的document。 2: 對于動態(tài)生成的元素也生效(因?yàn)閑ventHandler其實(shí)是綁定在document上的)。 3: jQuery 1.7之后live()就被廢棄了,用.on()替代 4: 對應(yīng)的解綁方法為 .die()
3: .delegate()
.delegate方法的用法是這樣的:delegatedObject.delegate("targetElment","eventType", eventHandler)
比方說仍然針對我們開頭的那段代碼,我們把對
$(".bookList").delegate(".bookList li","click", function(event){ $(this).addClass("red"); })
.delegate()和live()都用了事件的委托,不用之處在于:
1: delegate()可以自己選擇委托給特定的元素,而不是只能是document 2: jQuery 1.7之后.delegate()也被廢棄了,要用.on()替換 3: 對應(yīng)的解綁方法為 .undelegate()
4: .on()
.on()的語法:delegateObject.on("eventType", "targetElement", eventHandler)
jQuery 1.7之后,上面的三個方法都被on取而代之,而用on的不同寫法就可以達(dá)到跟它們相同的效果:
// Bind $( ".bookList li" ).bind( "click", function( e ) {} ); $( ".bookList li" ).on( "click", function( e ) {} ); // Live $( ".bookList li" ).live( "click", function( e ) {} ); $( document ).on( "click", ".bookList li", function( e ) {} ); // Delegate $( "#bookList" ).delegate( "li", "click", function( e ) {} ); $( ".bookList" ).on( "click", "li", function( e ) {} );
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/83555.html
摘要:方法將事件類型和一個事件處理函數(shù)直接注冊到了被選中的元素中。方法將與事件處理函數(shù)關(guān)聯(lián)的選擇器和事件信息一起附加到文檔的根級元素即。通過將事件信息注冊到上,這個事件處理函數(shù)將允許所有冒泡到的事件調(diào)用它例如委托型傳播型事件。 簡介 我了解到很多網(wǎng)頁開發(fā)者對jquery中的 .bind() .live() .delegate() 和 .on() 方法存在很多的疑惑。這些疑惑通常是關(guān)于它們之間...
摘要:方法用到了事件委托的概念來處理事件的綁定??梢杂迷趧討B(tài)添加的元素上缺點(diǎn)需要查找那個那個元素上發(fā)生了那個事件了,盡管比少很多了,不過,你還是得浪費(fèi)時間來查找。 當(dāng)我們試圖綁定一些事件到DOM元素上的時候,通常會使用以下的四個方法bind(),on(),live(),delegate()大家應(yīng)該用的較多的是前兩種方法。下面是我對四種方法的理解: Bind(): .bind()是最直接的綁定...
摘要:它是一個過濾器的作用,只有被選中元素的后代元素才會觸發(fā)事件。替換是引入的,目的是通過祖先元素來代理委派后代元素的事件綁定問題,某種程度上和優(yōu)點(diǎn)相似。相關(guān)資料深入理解新的綁定事件機(jī)制方法的使用新的事件綁定機(jī)制 前言 在開發(fā)項(xiàng)目的時候,JQuery的使用極其廣泛,如果腦海中沒有一點(diǎn)JQuery的基礎(chǔ)知識,隨性編寫,那么就有可能造成bug問題。JQuery 1.4版本之后新增了on方法,這個...
摘要:它是一個過濾器的作用,只有被選中元素的后代元素才會觸發(fā)事件。替換是引入的,目的是通過祖先元素來代理委派后代元素的事件綁定問題,某種程度上和優(yōu)點(diǎn)相似。相關(guān)資料深入理解新的綁定事件機(jī)制方法的使用新的事件綁定機(jī)制 前言 在開發(fā)項(xiàng)目的時候,JQuery的使用極其廣泛,如果腦海中沒有一點(diǎn)JQuery的基礎(chǔ)知識,隨性編寫,那么就有可能造成bug問題。JQuery 1.4版本之后新增了on方法,這個...
摘要:它是一個過濾器的作用,只有被選中元素的后代元素才會觸發(fā)事件。替換是引入的,目的是通過祖先元素來代理委派后代元素的事件綁定問題,某種程度上和優(yōu)點(diǎn)相似。相關(guān)資料深入理解新的綁定事件機(jī)制方法的使用新的事件綁定機(jī)制 前言 在開發(fā)項(xiàng)目的時候,JQuery的使用極其廣泛,如果腦海中沒有一點(diǎn)JQuery的基礎(chǔ)知識,隨性編寫,那么就有可能造成bug問題。JQuery 1.4版本之后新增了on方法,這個...
閱讀 3402·2023-04-26 01:46
閱讀 2932·2023-04-25 20:55
閱讀 5508·2021-09-22 14:57
閱讀 2989·2021-08-27 16:23
閱讀 1726·2019-08-30 14:02
閱讀 2077·2019-08-26 13:44
閱讀 656·2019-08-26 12:08
閱讀 2976·2019-08-26 11:47