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 相关文章推荐
客户端脚本中常常出现的一些问题和调试技巧
Jan 09 Javascript
如何做到打开一个页面,过几分钟自动转到另一页面
Apr 20 Javascript
Extjs学习过程中新手容易碰到的低级错误积累
Feb 11 Javascript
javascript 子窗体父窗体相互传值方法
May 31 Javascript
JavaScript 浏览器验证代码(来自discuz)
Jul 17 Javascript
javascript中全局对象的parseInt()方法使用介绍
Dec 19 Javascript
手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)
Jun 06 Javascript
js和jquery分别验证单选框、复选框、下拉框
Dec 17 Javascript
JavaScript判断输入是否为数字类型的方法总结
Sep 28 Javascript
ES6学习笔记之map、set与数组、对象的对比
Mar 01 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
Nov 18 Javascript
JS实现网页时钟特效
Mar 25 Javascript
解决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 验证图片生成函数
2009/05/21 PHP
php allow_url_include的应用和解释
2010/04/22 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
2019/04/17 PHP
laravel 实现设置时区的简单方法
2019/10/10 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
jQuery编写widget的一些技巧分享
2010/10/28 Javascript
JavaScript高级程序设计(第3版)学习笔记5 js语句
2012/10/11 Javascript
jquery ui对话框实例代码
2013/05/10 Javascript
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
简单的JS轮播图代码
2016/07/18 Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
2017/02/27 Javascript
Angular2入门--架构总览
2017/03/29 Javascript
Vue.js实现在下拉列表区域外点击即可关闭下拉列表的功能(自定义下拉列表)
2017/05/30 Javascript
JS滚动到指定位置导航栏固定顶部
2017/07/03 Javascript
Vue.js 实现微信公众号菜单编辑器功能(二)
2018/05/08 Javascript
JS中如何轻松遍历对象属性的方式总结
2019/08/06 Javascript
webpack优化之代码分割与公共代码提取详解
2019/11/22 Javascript
深入理解redux之compose的具体应用
2020/01/12 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
Python不规范的日期字符串处理类
2014/06/10 Python
Python基础篇之初识Python必看攻略
2016/06/23 Python
python之PyMongo使用总结
2017/05/26 Python
13个最常用的Python深度学习库介绍
2017/10/28 Python
Python数据可视化正态分布简单分析及实现代码
2017/12/04 Python
Flask-Mail用法实例分析
2018/07/21 Python
python3 selenium自动化测试 强大的CSS定位方法
2019/08/23 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
JD Sports澳洲官网:英国领先的运动鞋和运动时尚零售商
2020/02/15 全球购物
运动会开幕词
2015/01/28 职场文书
爱国主义影片观后感
2015/06/18 职场文书
golang gopm get -g -v 无法获取第三方库的解决方案
2021/05/05 Golang
python爬虫之selenium库的安装及使用教程
2021/05/23 Python
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python
MySQL中CURRENT_TIMESTAMP的使用方式
2021/11/27 MySQL