国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

jQuery事件委托代碼實踐詳解

2019-11-19 11:18:10
字體:
來源:轉載
供稿:網友

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,結果如下:

Td is clickedBody 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,結果如下:

Td is clicked 

js事件委托

如果我們想給上面的table中所有的td添加點擊事件,可以通過循環綁定,或者是采用事件委托方式,如下:

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參數,使用事件委托

$("table").on("click", "td", function(){console.log(e.target.tagName+" ");});

或者:

$(document).on("click", "td", function(){console.log(e.target.tagName+" ");});

此時事件冒泡到document或者table時會監測是否是td selector,匹配時會觸發事件

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 苍南县| 安顺市| 开阳县| 宜川县| 高密市| 东乌珠穆沁旗| 钟祥市| 南城县| 望城县| 马山县| 云安县| 蓬溪县| 兴和县| 五莲县| 榆林市| 张北县| 乌兰察布市| 漳州市| 潼关县| 麦盖提县| 酒泉市| 历史| 阳原县| 大化| 邵阳市| 申扎县| 武陟县| 景宁| 宁化县| 邛崃市| 集安市| 中方县| 和田县| 浑源县| 海盐县| 屯门区| 平阳县| 兖州市| 桓仁| 榆林市| 大洼县|