动态添加事件的实现 以及自己是实现阻止事件冒泡

本文介绍了一种在网页中动态创建元素并为其绑定点击事件的方法。通过JavaScript动态生成的元素可以实现与页面初始加载时存在的元素相同的功能。文章展示了如何为已存在的元素绑定事件监听器,并解释了为何直接为父元素添加事件监听器可能无法捕捉到动态添加的子元素的事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>

<body>
    <div id="d" style='width:100px;height:100px;background-color: red '>
        
        <span>这是页面中存在的span</span>

    </div>
    <input type="button" name="" value="按钮" id="btn">
   <script>

   // ★★★★★不支持动态添加事件,即你创建出来的span是没有click事件的
      var d=document.getElementById('d');
        d.onclick=function(e){
             var tar=e.target;
             if(tar.nodeName!=='SPAN'){
               return;
            }
         alert(123);
        
        };
       var spans=d.getElementsByTagName('span');

            for(var i=0;i<spans.length;i++){
                spans[i].onclick=function(){
                    alert(this.innerHTML)
                }
            }

              var btn = document.getElementById('btn')
         btn.onclick = function() {
              // 动态创建div元素
                var span = document.createElement("span");
               span.innerHTML = "动态创建的元素";

              d.appendChild(span);
         };



// ★★★★★支持动态添加事件
             var d=document.getElementById('d');
       d.onclick=function(e){
            var tar=e.target;
            if(tar.nodeName!=='SPAN'){
                return;//这里也有阻止事件冒泡的作用
        }
        alert(123);
        
       };

       var btn=document.getElementById('btn');
       btn.onclick=function(){

         var span=document.createElement('span');
           span.innerHTML='动态创建的元素 ';
             d.appendChild(span);

 }


   </script>
</body>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值