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

首頁 > 網(wǎng)站 > WEB開發(fā) > 正文

如何給動(dòng)態(tài)元素添加事件

2024-04-27 15:19:09
字體:
供稿:網(wǎng)友

要給動(dòng)態(tài)添加的元素添加事件,可以給其父元素添加事件。這樣若是在冒泡事件下,點(diǎn)擊事件由子元素傳遞到父元素,就會(huì)觸發(fā)父元素上綁定的事件函數(shù),在函數(shù)里做一下過濾,便可實(shí)現(xiàn)想要的功能。(在捕獲事件里也是同樣的道理)

以下分三種事件舉例。javaScript事件有HEML事件、DOM0級事件和DOM2級事件。

1.      HEML事件:

如示例所示,當(dāng)點(diǎn)擊“添加”按鈕添加元素后,點(diǎn)擊新添加的元素也會(huì)在控制臺(tái)看到日志。

PRintLog的調(diào)用直接寫在html的元素上,這種添加事件的方法就是HTML事件。這種方法的缺點(diǎn)是html和Javascript代碼耦合性較大。

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>javascript event demo</title>    <!--HTML事件-->    <link rel="stylesheet" type="text/CSS" href="demo.css"></head><body onload="init()">    <div id="parent" class="parent" onclick="printLog(event)">        <span class="child"></span>        <span class="child"></span>    </div>    <button id="add">添加</button>    <script type="text/javascript">        function init(){            //當(dāng)點(diǎn)擊添加按鈕時(shí),添加一個(gè)child span            var addObj = document.getElementById("add");            addObj.onclick = function(){                var parentObj = document.getElementById("parent");                var childObj = document.createElement("span");                childObj.setAttribute('class','child');                parentObj.appendChild(childObj);            }        }        //點(diǎn)擊child span時(shí),打印一行日志        function printLog(event){            console.log("當(dāng)前節(jié)點(diǎn)類名:"+event.currentTarget.className+",產(chǎn)生事件的節(jié)點(diǎn)類名:"+event.target.className);        }    </script></body></html>

2.      DOM0級事件:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>javascript event demo</title>    <link rel="stylesheet" type="text/css" href="demo.css"></head><body onload="init()">    <div id="parent" class="parent">        <span class="child"></span>        <span class="child"></span>    </div>    <button id="add">添加</button>    <script type="text/javascript">        function init(){            var addObj = document.getElementById("add");            var parentObj = document.getElementById("parent");            //DOM0級事件:當(dāng)點(diǎn)擊添加按鈕時(shí),添加一個(gè)child span            addObj.onclick = function(){                var childObj = document.createElement("span");                childObj.setAttribute('class','child');                parentObj.appendChild(childObj);            }            //DOM0級事件:點(diǎn)擊child span時(shí),打印一行日志            parentObj.onclick = function(event){                console.log("當(dāng)前節(jié)點(diǎn)類名:"+event.currentTarget.className+",產(chǎn)生事件的節(jié)點(diǎn)類名:"+event.target.className);            }            //取消事件            // parentObj.onclick = null;        }    </script></body></html>

3.      DOM2級事件:

addEventListener(eventfunctionuseCapture)

removeEventListener(eventfunctionuseCapture)

IE事件處理程序調(diào)用的是如下函數(shù),沒有最后一個(gè)參數(shù)的原因是早期的IE瀏覽器只支持冒泡事件。

attachEvent(eventfunction)

detachEvent(eventfunction)

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>javascript event demo</title>    <link rel="stylesheet" type="text/css" href="demo.css"></head><body onload="init()">    <div id="parent" class="parent">        <span class="child"></span>        <span class="child"></span>    </div>    <button id="add">添加</button>    <script type="text/javascript">        function init(){            var addObj = document.getElementById("add");            var parentObj = document.getElementById("parent");            //DOM0級事件:當(dāng)點(diǎn)擊添加按鈕時(shí),添加一個(gè)child span            addObj.onclick = function(){                var childObj = document.createElement("span");                childObj.setAttribute('class','child');                parentObj.appendChild(childObj);            }            //DOM2級事件:false表示冒泡事件;true表示捕獲事件            parentObj.addEventListener('click',printLog,false);            //刪除事件            // parentObj.removeEventListener('click',printLog,false);        }        //點(diǎn)擊child span時(shí),打印一行日志        function printLog(event){            console.log("當(dāng)前節(jié)點(diǎn)類名:"+event.currentTarget.className+",產(chǎn)生事件的節(jié)點(diǎn)類名:"+event.target.className);        }    </script></body></html>

以上代碼的效果圖如下,后面兩個(gè)元素是點(diǎn)擊添加按鈕后添加的。

附:html代碼里所用的css文件如下:

    #parent{        border:1px solid #876;        width:300px;        height:100px;    }    .child{        border:1px solid #954;        background-color:#954;        width:30px;        height:30px;        display:inline-block;        margin: 5px 2px;    }    .child:hover{        border:1px solid #333;    }    #add{        margin-top:10px;    }


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 辽宁省| 富平县| 阿尔山市| 民勤县| 昌都县| 大邑县| 淳化县| 铁岭县| 石首市| 深泽县| 南昌县| 平昌县| 深州市| 宜黄县| 龙口市| 大姚县| 天津市| 丰镇市| 界首市| 灯塔市| 当阳市| 翁牛特旗| 汉中市| 汉阴县| 宁乡县| 乌拉特后旗| 康定县| 五台县| 庆城县| 寿宁县| 曲麻莱县| 洞口县| 加查县| 礼泉县| 周至县| 安岳县| 鹰潭市| 涞源县| 屯门区| 蓬溪县| 繁昌县|