麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網站 > WEB開發 > 正文

如何給動態元素添加事件

2024-04-27 15:19:09
字體:
來源:轉載
供稿:網友

要給動態添加的元素添加事件,可以給其父元素添加事件。這樣若是在冒泡事件下,點擊事件由子元素傳遞到父元素,就會觸發父元素上綁定的事件函數,在函數里做一下過濾,便可實現想要的功能。(在捕獲事件里也是同樣的道理)

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

1.      HEML事件:

如示例所示,當點擊“添加”按鈕添加元素后,點擊新添加的元素也會在控制臺看到日志。

PRintLog的調用直接寫在html的元素上,這種添加事件的方法就是HTML事件。這種方法的缺點是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(){            //當點擊添加按鈕時,添加一個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);            }        }        //點擊child span時,打印一行日志        function printLog(event){            console.log("當前節點類名:"+event.currentTarget.className+",產生事件的節點類名:"+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級事件:當點擊添加按鈕時,添加一個child span            addObj.onclick = function(){                var childObj = document.createElement("span");                childObj.setAttribute('class','child');                parentObj.appendChild(childObj);            }            //DOM0級事件:點擊child span時,打印一行日志            parentObj.onclick = function(event){                console.log("當前節點類名:"+event.currentTarget.className+",產生事件的節點類名:"+event.target.className);            }            //取消事件            // parentObj.onclick = null;        }    </script></body></html>

3.      DOM2級事件:

addEventListener(eventfunctionuseCapture)

removeEventListener(eventfunctionuseCapture)

IE事件處理程序調用的是如下函數,沒有最后一個參數的原因是早期的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級事件:當點擊添加按鈕時,添加一個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);        }        //點擊child span時,打印一行日志        function printLog(event){            console.log("當前節點類名:"+event.currentTarget.className+",產生事件的節點類名:"+event.target.className);        }    </script></body></html>

以上代碼的效果圖如下,后面兩個元素是點擊添加按鈕后添加的。

附: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;    }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一级性生活视频 | 成人福利电影在线观看 | a视频在线看 | 7m视频成人精品分类 | 日本中文字幕高清 | 中文字幕精品一二三四五六七八 | 一级毛片在线免费观看视频 | 国产成人在线一区二区 | 99精品视频在线看 | 成码无人av片在线观看网站 | v天堂在线视频 | 亚洲精品午夜视频 | 一级免费特黄视频 | 99精品国产一区二区三区 | 91福利在线观看 | 国产一区免费 | 成人黄色短视频在线观看 | 一道本不卡一区 | 国产99久久久国产精品下药 | 中国黄色一级生活片 | 91成人免费网站 | 中文字幕精品一二三四五六七八 | 精品国产乱码久久久久久丨区2区 | 国产精品高潮99久久久久久久 | 国产一级一片免费播放 | 久久精品一区二区三区四区五区 | 美女黄色影院 | 久久久久久久高清 | 久久人人爽人人爽人人片av高清 | 一级黄色毛片播放 | 超久久 | 一级做a爱片性色毛片高清 国产精品色在线网站 | 亚洲精品久久久久久久久久 | 成人情欲视频在线看免费 | 视频一区 在线 | 国内精品免费一区二区2001 | 国产成人精品无人区一区 | 国产精品99精品 | 国产一区二区免费 | 日韩电影av在线 | 免费h片网站 |