JQuery事件委托(適用于給動(dòng)態(tài)生成的腳本元素添加事件)
最近一段時(shí)間打了一個(gè)大仗,現(xiàn)在總算消停點(diǎn),才有時(shí)間來做個(gè)總結(jié)吧算是:
移動(dòng)端遇到一個(gè)項(xiàng)目,是一個(gè)列表的側(cè)滑欄,在我這里用jq寫的交互事件。自測(cè)各方面都挺好的,美滋滋的給了研發(fā)。研發(fā)也美滋滋的開始開發(fā)。
但是,好景不長(zhǎng)。。。
研發(fā)加了ajax事件后,我的交互效果有部分受了影響!
一個(gè)小姑娘,在一群大老爺們研發(fā)堆里,對(duì)著昏暗的電腦和看不太懂的后臺(tái)代碼,改了半天。最后沒解決。我就回來了。
后來就找共同點(diǎn),發(fā)現(xiàn)有個(gè)類名控制的交互都不能實(shí)現(xiàn),最后去問研發(fā),你是不是沒加上我的類名?
回:加著呢??!我一看模擬器,確實(shí)加著呢。但是看源碼,沒有,因?yàn)樗褂胊jax后期加的。。所以一開始事件找不到“接頭人”就沒有執(zhí)行。
掃噶,定位到問題,就好解決了。
之所以整理成隨筆,是因?yàn)槲抑皼]遇到過這個(gè)問題,聽過事件委托機(jī)制,但是根本沒研究過不知道適用于什么樣的bug場(chǎng)景。今天逮到了就不能放過!
jq寫了點(diǎn)擊事件,是通過獲取元素的類名被點(diǎn)擊后執(zhí)行對(duì)應(yīng)方法,但是研發(fā)套完模板,他會(huì)把所有的結(jié)構(gòu)先清空,導(dǎo)致jq根本找不到那個(gè)元素,所以事件就不得執(zhí)行了。
正規(guī)點(diǎn)的說:JS異步加載,JQ事件不被執(zhí)行解決方法(百度的標(biāo)題,hah)
jquery中動(dòng)態(tài)新增的元素節(jié)點(diǎn)無法觸發(fā)事件問題(同上)
解決方法:
值得注意的是:親測(cè)此方法無效,可能是我用的jq的版本太高了,1.9多,已經(jīng)不支持這個(gè)方法了
第二個(gè)方法:
但是缺點(diǎn)是:給一個(gè)元素添加多個(gè)事件委托機(jī)制時(shí),他就掛了。
$("div").delegate("button","click",function(){ console.log("start") })
div下面的button點(diǎn)擊的時(shí)候,打印start,這個(gè)button可以是動(dòng)態(tài)生成的
王者方法:on
- Jquery 動(dòng)態(tài)添加元素并添加點(diǎn)擊事件實(shí)現(xiàn)過程解析
- jQuery實(shí)現(xiàn)為動(dòng)態(tài)添加的元素綁定事件實(shí)例分析
- jQuery動(dòng)態(tài)添加元素?zé)o法觸發(fā)綁定事件的解決方法分析
- jQuery如何獲取動(dòng)態(tài)添加的元素
- jQuery給動(dòng)態(tài)添加的元素綁定事件的方法
- Jquery對(duì)新插入的節(jié)點(diǎn) 綁定Click事件失效的解決方法
- jquery動(dòng)態(tài)添加元素事件失效問題解決方法
- jQuery動(dòng)態(tài)添加元素后元素注冊(cè)事件失效解決
相關(guān)文章
jQuery控制input只能輸入數(shù)字和兩位小數(shù)的方法
這篇文章主要介紹了jQuery控制input只能輸入數(shù)字和兩位小數(shù)的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05jQuery實(shí)現(xiàn)按鈕只點(diǎn)擊一次后就取消點(diǎn)擊事件綁定的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)按鈕只點(diǎn)擊一次后就取消點(diǎn)擊事件綁定的方法,可實(shí)現(xiàn)點(diǎn)擊按鈕后取消onclick事件綁定的功能,需要的朋友可以參考下2015-06-06jQuery簡(jiǎn)單注冊(cè)和禁用全局事件的方法
這篇文章主要介紹了jQuery簡(jiǎn)單注冊(cè)和禁用全局事件的方法,結(jié)合實(shí)例形式分析了jQuery中ajaxStart與ajaxStop方法的使用技巧,需要的朋友可以參考下2016-07-07JQuery點(diǎn)擊事件回到頁面頂部效果的實(shí)現(xiàn)代碼
下面小編就為大家?guī)硪黄狫Query點(diǎn)擊事件回到頁面頂部效果的實(shí)現(xiàn)代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-05jQuery插件FusionCharts繪制的3D環(huán)餅圖效果示例【附demo源碼】
這篇文章主要介紹了jQuery插件FusionCharts繪制的3D環(huán)餅圖效果,結(jié)合完整實(shí)例形式分析了jQuery使用FusionCharts載入xml格式數(shù)據(jù)繪制圖形的操作步驟與相關(guān)實(shí)現(xiàn)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-04-04jquery easyUI中ajax異步校驗(yàn)用戶名
這篇文章主要為大家詳細(xì)介紹了jquery easyUI中ajax異步校驗(yàn)用戶名,感興趣的小伙伴們可以參考一下2016-08-08jquery動(dòng)態(tài)加載js/css文件方法(自寫小函數(shù))
jquery自帶的getSrcript文件只能動(dòng)態(tài)加載js代碼,但不能加載css,后來自己寫了一個(gè)可加載js與css的程序2014-10-10