jQuery事件委托代碼實踐詳解
javascript的事件模型,采用"冒泡"模式,子元素的事件會逐級向上"冒泡",成為父元素的事件。
在需要為較多的元素綁定事件時應該使用事件委托 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"); };
點擊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"); };
點擊td targetTd,結(jié)果如下:
Td is clicked
js事件委托
如果我們想給上面的table中所有的td添加點擊事件,可以通過循環(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綁定點擊事件可以使用:
$("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+" "); });
此時事件冒泡到document或者table時會監(jiān)測是否是td selector,匹配時會觸發(fā)事件
相關文章
jQuery利用FormData上傳文件實現(xiàn)批量上傳
這篇文章主要為大家詳細介紹了jQuery利用FormData上傳文件實現(xiàn)批量上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-12-12jQuery實現(xiàn)的動態(tài)文字變化輸出效果示例【附演示與demo源碼下載】
這篇文章主要介紹了jQuery實現(xiàn)的動態(tài)文字變化輸出效果,采用jquery.quoterotator.min.js插件實現(xiàn)了文字動態(tài)變換顯示的功能,并附帶演示與demo源碼供讀者下載參考,需要的朋友可以參考下2017-03-03JQuery Ajax執(zhí)行跨域請求數(shù)據(jù)的解決方案
今天小編就為大家分享一篇關于JQuery Ajax執(zhí)行跨域請求數(shù)據(jù)的解決方案,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12javaScript和jQuery自動加載簡單代碼實現(xiàn)方法
給大家介紹一下利用javaScript和jQuery實現(xiàn)自動加載最簡單的代碼寫法。2017-11-11