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