jQuery事件委托代碼實(shí)踐詳解
javascript的事件模型,采用"冒泡"模式,子元素的事件會(huì)逐級(jí)向上"冒泡",成為父元素的事件。
在需要為較多的元素綁定事件時(shí)應(yīng)該使用事件委托 event delegation
javascript事件傳播
html如下:
<body> <table> <tr><td id="targetTd"></td><td></td><td></td></tr> <tr><td></td><td></td><td></td></tr> </table> </body>
添加腳本:
targetTd.onclick = function (event) { console.log("Td is clicked"); }; document.body.onclick = function (event) { console.log("Body is clicked"); };
點(diǎn)擊td targetTd,結(jié)果如下:
Td is clicked Body is clicked
使用stopPropagation可以阻止事件的傳播(ie下使用cancelBubble)
eg:
targetTd.onclick = function (event) { console.log("Td is clicked"); event.stopPropagation(); }; document.body.onclick = function (event) { console.log("Body is clicked"); };
點(diǎn)擊td targetTd,結(jié)果如下:
Td is clicked
js事件委托
如果我們想給上面的table中所有的td添加點(diǎn)擊事件,可以通過循環(huán)綁定,或者是采用事件委托方式,如下:
document.body.onclick = function (event) { if(event.target.tagName === "TD"){ console.log(event.target.tagName+" is clicked"); } };
jQuery事件委托
jquery 事件綁定 on 方法定義如下:
.on( events [, selector ] [, data ], handler(eventObject) )
取消事件的綁定可以使用off
$(document).off("click", "td");
給td綁定點(diǎn)擊事件可以使用:
$("td").on("click", function(e){ console.log(e.target.tagName+" is clicked"); });
加入selector參數(shù),使用事件委托
$("table").on("click", "td", function(){ console.log(e.target.tagName+" "); });
或者:
$(document).on("click", "td", function(){ console.log(e.target.tagName+" "); });
此時(shí)事件冒泡到document或者table時(shí)會(huì)監(jiān)測(cè)是否是td selector,匹配時(shí)會(huì)觸發(fā)事件
- JQuery事件委托原理與用法實(shí)例分析
- JavaScript之事件委托實(shí)例(附原生js和jQuery代碼)
- 淺談事件冒泡、事件委托、jQuery元素節(jié)點(diǎn)操作、滾輪事件與函數(shù)節(jié)流
- jQuery動(dòng)態(tài)追加頁(yè)面數(shù)據(jù)以及事件委托詳解
- jQuery事件委托之Safari
- jquery關(guān)于事件冒泡和事件委托的技巧及阻止與允許事件冒泡的三種實(shí)現(xiàn)方法
- jQuery的事件委托實(shí)例分析
- jQuery代碼優(yōu)化 事件委托篇
- JQuery事件委托(適用于給動(dòng)態(tài)生成的腳本元素添加事件)
相關(guān)文章
jQuery利用FormData上傳文件實(shí)現(xiàn)批量上傳
這篇文章主要為大家詳細(xì)介紹了jQuery利用FormData上傳文件實(shí)現(xiàn)批量上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12jQuery實(shí)現(xiàn)的動(dòng)態(tài)文字變化輸出效果示例【附演示與demo源碼下載】
這篇文章主要介紹了jQuery實(shí)現(xiàn)的動(dòng)態(tài)文字變化輸出效果,采用jquery.quoterotator.min.js插件實(shí)現(xiàn)了文字動(dòng)態(tài)變換顯示的功能,并附帶演示與demo源碼供讀者下載參考,需要的朋友可以參考下2017-03-03jQuery+CSS3實(shí)現(xiàn)樹葉飄落特效
本文給大家分享的是一段使用jQuery+CSS3實(shí)現(xiàn)樹葉飄落特效的代碼,效果非常不錯(cuò),分享給大家,希望大家能夠喜歡2015-02-02jquery——九宮格大轉(zhuǎn)盤抽獎(jiǎng)實(shí)例
本篇文章主要介紹了jquery——九宮格大轉(zhuǎn)盤抽獎(jiǎng)實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01JQuery Ajax執(zhí)行跨域請(qǐng)求數(shù)據(jù)的解決方案
今天小編就為大家分享一篇關(guān)于JQuery Ajax執(zhí)行跨域請(qǐng)求數(shù)據(jù)的解決方案,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12javaScript和jQuery自動(dòng)加載簡(jiǎn)單代碼實(shí)現(xiàn)方法
給大家介紹一下利用javaScript和jQuery實(shí)現(xiàn)自動(dòng)加載最簡(jiǎn)單的代碼寫法。2017-11-11