JS如何实现动态添加的元素绑定事件


Posted in Javascript onNovember 12, 2019

这篇文章主要介绍了JS如何实现动态添加的元素绑定事件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

最近做的项目要实现一个动态添加动态删除的功能,思考了一下,该怎么给动态添加的元素绑定事件。最后觉得有两种方式比较可靠,第一种是在动态添加的html代码里添加oclick事件,然后给传个唯一的参数来判断点击了哪个,然后做相应的操作,第二种是通过事件委托的原理来处理,事件委托将一个事件侦听器实际绑定到整个容器,然后在单击它时能够访问每个列表项,这种更高效一些

具体的代码实现如下:

第一:onclick

<body>
  <button onclick="AddJob()">添加工作经历</button>
  <button onclick="GetJobs()">获取全部工作</button>

  <div id="joblist">
    <div id="job1" class="job">
      <input name="CompanyName" type="text" value="公司1" />
      <button onclick="DelJob(1)">删除</button>
    </div>
  </div>
  <script type="text/javascript">
    //添加工作经历
    function AddJob() {
      var timestamp = parseInt((new Date()).valueOf()); //唯一的标识
      console.log(parseInt((new Date()).valueOf()));
      document.getElementById("joblist").innerHTML +=
        `<div id="job` + timestamp + `" class="job">
           <input name="CompanyName" type="text" value="公司` + timestamp + `" />
           <button onclick="DelJob(` + timestamp + `)">删除</button>
         </div>`;
    }
    //删除工作经历
    function DelJob(timestamp) {
      document.getElementById("job" + timestamp).remove();
    }
    //获取全部工作经历
    function GetJobs() {
      var jobs = document.getElementsByClassName("job");
      var arr = [];
      for (var i = 0; i < jobs.length; i++) {
        var job = jobs[i];
        var companyName = job.children[0].value;
        arr.push(companyName);
      }
      console.log(arr);
      alert(arr);
    }
  </script>
</body>

第二种:

document.getElementById('joblist').addEventListener('click', function (ev) {
    var target = ev.target || ev.srcElement;
    if (target.nodeName.toLowerCase() == 'button') {
      var e = document.getElementById(target.parentNode.id);
      document.getElementById("joblist").removeChild(e);
    }
  });

效果

JS如何实现动态添加的元素绑定事件

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
Dec 09 Javascript
JQuery动态创建DOM、表单元素的实现代码
Aug 09 Javascript
jquery实现手风琴效果实例代码
Nov 15 Javascript
js实现按Ctrl+Enter发送效果
Sep 18 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
Sep 09 Javascript
AngularJS $http模块POST请求实现
Apr 08 Javascript
vue综合组件间的通信详解
Nov 06 Javascript
jQuery实现的简单手风琴效果示例
Aug 29 jQuery
JavaScript内置对象math,global功能与用法实例分析
Jun 10 Javascript
Vue中的transition封装组件的实现方法
Aug 13 Javascript
小程序双头slider选择器的实现示例
Mar 31 Javascript
vue3不同环境下实现配置代理
May 25 Vue.js
解决Vue打包上线之后部分CSS不生效的问题
Nov 12 #Javascript
微信小程序点击顶部导航栏切换样式代码实例
Nov 12 #Javascript
Vue自定义指令结合阿里云OSS优化图片的实现方法
Nov 12 #Javascript
浅谈如何优雅处理JavaScript异步错误
Nov 12 #Javascript
vue页面切换项目实现转场动画的方法
Nov 12 #Javascript
解决vue-cli 打包后自定义动画未执行的问题
Nov 12 #Javascript
vue transition 在子组件中失效的解决
Nov 12 #Javascript
You might like
php+mysql开源XNA 聚合程序发布 下载
2007/07/13 PHP
php 购物车的例子
2009/05/04 PHP
PHP企业级应用之常见缓存技术篇
2011/01/27 PHP
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
ThinkPHP实现图片上传操作的方法详解
2017/05/08 PHP
Yii 2.0自带的验证码使用经验分享
2017/06/19 PHP
PHP进阶学习之垃圾回收机制详解
2019/06/18 PHP
在Javascript中处理字符串之big()方法的使用
2015/06/08 Javascript
15个常用的jquery代码片段
2015/12/19 Javascript
聊一聊JS中this的指向问题
2016/06/17 Javascript
使用node.js中的Buffer类处理二进制数据的方法
2016/11/26 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
AngularJS路由切换实现方法分析
2017/03/17 Javascript
nodejs制作爬虫实现批量下载图片
2017/05/19 NodeJs
vue 粒子特效的示例代码
2017/09/19 Javascript
vue.js $refs和$emit 父子组件交互的方法
2017/12/20 Javascript
vue vuex vue-rouert后台项目——权限路由(适合初学)
2017/12/29 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
2019/08/28 Javascript
JS实现图片懒加载(lazyload)过程详解
2020/04/02 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
解决pycharm的Python console不能调试当前程序的问题
2019/01/20 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
解决Python图形界面中设置尺寸的问题
2020/03/05 Python
python使用信号量动态更新配置文件的操作
2020/04/01 Python
攀岩、滑雪、徒步旅行装备:Black Diamond Equipment
2019/08/16 全球购物
怎样写留学自荐信
2013/11/11 职场文书
采购部主管岗位职责
2014/01/01 职场文书
少先队学雷锋活动月总结
2014/03/09 职场文书
三严三实对照检查材料
2014/08/25 职场文书
研究生简历自我评价范文
2014/09/13 职场文书
公司员工离职感言
2015/08/03 职场文书
导游词之峨眉山
2019/12/16 职场文书
深入浅析Redis 集群伸缩原理
2021/05/15 Redis
Feign调用全局异常处理解决方案
2021/06/24 Java/Android