国产探花免费观看_亚洲丰满少妇自慰呻吟_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,匹配時會觸發事件

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南城县| 游戏| 皋兰县| 来凤县| 翼城县| 中宁县| 博罗县| 综艺| 滕州市| 泸西县| 昌平区| 璧山县| 塔城市| 波密县| 德化县| 沂水县| 固始县| 城步| 廉江市| 西林县| 松溪县| 蓬安县| 仙居县| 九龙县| 岢岚县| 富阳市| 开平市| 清新县| 阳春市| 鹤壁市| 清流县| 宁远县| 石首市| 宿迁市| 印江| 凭祥市| 韶关市| 靖边县| 搜索| 乌兰察布市| 延吉市|