JS实现为动态添加的元素增加事件功能示例【基于事件委托】

 更新时间:2018年03月21日 12:13:12   作者:badmoonc  
这篇文章主要介绍了JS实现为动态添加的元素增加事件功能,结合实例形式分析了javascript基于事件委托实现针对动态添加的元素增加事件的相关操作技巧,需要的朋友可以参考下

本文实例讲述了JS实现为动态添加的元素增加事件功能。分享给大家供大家参考,具体如下:

我们在日常开发中有时会通过js创建一些元素,但是如果使用原始的for循环给创建的节点添加事件的方法往往行不通:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>www.jb51.net js动态添加事件</title>
</head>
<body>
 <ul id="out-ul">
  <li class="out-li">123</li>
  <li class="out-li">123</li>
  <li class="out-li">123</li>
 </ul>
 <button id="btn">添加</button>
 <script>
  document.getElementById('btn').addEventListener('click',function(){
   var htmlFragment='<li>我是新增的li</li>';
   var addLi=document.createElement('li');
   addLi.innerHTML=htmlFragment;
   outUl.appendChild(addLi);
  },false);
  var outUl=document.getElementById('out-ul')
  var outLi=outUl.getElementsByClassName('out-li');
  for(var i=0;i<outLi.length;i++){
   outLi[i].onclick=function(){
    alert(1);
   }
  }
 </script>
</body>
</html>

运行效果:

比如这样,通过for循环给li添加的事件无法绑定到新增的li上边,详细的原因这里不做解释。那么这个如何解决呢,其实办法也简单,就是通过事件委托的方式去解决,直接上代码,上面的代码简单改造:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>www.jb51.net js动态添加事件</title>
</head>
<body>
 <ul id="out-ul">
  <li class="out-li">123</li>
  <li class="out-li">123</li>
  <li class="out-li">123</li>
 </ul>
 <button id="btn">添加</button>
 <script>
  var outUl=document.getElementById('out-ul')
  var outLi=outUl.getElementsByClassName('out-li');
  document.getElementById('btn').addEventListener('click',function(){
   var htmlFragment='<li>我是新增的li</li>';
   var addLi=document.createElement('li');
   addLi.innerHTML=htmlFragment;
   outUl.appendChild(addLi);
  },false);
  outUl.addEventListener('click',function(e){
   e=e || window.event;//兼容ie
   alert(e.target.innerHTML);
  }, false);
 </script>
</body>
</html>

运行效果:

这样一来,即便是新增的li点击事件也可以被触发了,不过在这里jquery的详细方式就不做介绍了,原生js跟jquery的解决原理其实是一样的。相信大家把原生的理解了,jquery的方式也可以很好的理解

PS:关于javascript事件说明可参考本站javascript事件与功能说明大全:http://tools.jb51.net/table/javascript_event

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript页面元素操作技巧总结》、《JavaScript操作DOM技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript错误与调试技巧总结

希望本文所述对大家JavaScript程序设计有所帮助。

相关文章

  • JavaScript中reduce()的用法实例

    JavaScript中reduce()的用法实例

    reduce()方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值,下面这篇文章主要给大家介绍了关于JavaScript中reduce()的用法实例,需要的朋友可以参考下
    2022-05-05
  • JavaScript 七大技巧(二)

    JavaScript 七大技巧(二)

    我写JavaScript代码已经很久了,都记不起是什么年代开始的了。本文给大家分享javascript七大技巧(二),对javascript技巧相关知识感兴趣的朋友一起学习吧
    2015-12-12
  • 微信小程序自定义Dialog弹框

    微信小程序自定义Dialog弹框

    这篇文章主要为大家详细介绍了微信小程序自定义Dialog弹框,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • fix-ie5.js扩展在IE5下不能使用的几个方法

    fix-ie5.js扩展在IE5下不能使用的几个方法

    fix-ie5.js扩展在IE5下不能使用的几个方法...
    2007-08-08
  • JavaScript获取元素尺寸和大小操作总结

    JavaScript获取元素尺寸和大小操作总结

    本文总结了使用JavaScript获取指定元素大小、位置的几种方式。如果你用的是JQuery,则获取元素大小是非常简单的。但是我们还是有必要知道如何通过原生JavaScript来获取,需要的朋友可以参考下
    2015-02-02
  • js实现touch移动触屏滑动事件

    js实现touch移动触屏滑动事件

    在开始描述touch事件之前,需要先描述一下多触式系统中特有的touch对象(android和iOS乃至nokia最新的meego系统都模拟了类 似的对象)。这个对象封装一次屏幕触摸,一般来自于手指。它在touch事件触发的时候产生,可以 通过touch event handler的event对象取到
    2015-04-04
  • XP折叠菜单&仿QQ2006菜单

    XP折叠菜单&仿QQ2006菜单

    XP折叠菜单&仿QQ2006菜单...
    2006-12-12
  • 浅谈JS的二进制家族

    浅谈JS的二进制家族

    事实上,前端很少涉及对二进制数据的处理,但即便如此,我们偶尔总能在角落里看见它们的身影。 今天我们就来聊一聊前端的二进制家族:Blob、ArrayBuffer和Buffer
    2021-05-05
  • javascript实现点击按钮让DIV层弹性移动的方法

    javascript实现点击按钮让DIV层弹性移动的方法

    这篇文章主要介绍了javascript实现点击按钮让DIV层弹性移动的方法,实例分析了javascript操作div层的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • jQuery javascript获得网页的高度与宽度的实现代码

    jQuery javascript获得网页的高度与宽度的实现代码

    下面小编就为大家带来一篇jQuery javascript获得网页的高度与宽度的实现代码。小编觉得挺不错的,现在分享给大家,也给大家做个参考
    2016-04-04

最新评论