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 相关文章推荐
可以支持多中格式的JS键盘
May 02 Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
Dec 28 Javascript
JS高级拖动技术 setCapture,releaseCapture
Jul 31 Javascript
jquery1.9 下检测浏览器类型和版本的方法
Dec 26 Javascript
jquery制作搜狐快站页面效果示例分享
Feb 21 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
Jun 15 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
Sep 04 Javascript
JavaScript Ajax实现异步通信
Dec 14 Javascript
Vue自定义指令拖拽功能示例
Feb 17 Javascript
vue加载自定义的js文件方法
Mar 13 Javascript
基于vue+element实现全局loading过程详解
Jul 10 Javascript
vue项目如何监听localStorage或sessionStorage的变化
Jan 04 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 和 HTML
2006/10/09 PHP
配置最新的PHP加MYSQL服务器
2006/10/09 PHP
php 修改上传文件大小限制实例详解
2016/10/23 PHP
jQuery学习笔记之jQuery的动画
2010/12/22 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
Nodejs express框架一个工程中同时使用ejs模版和jade模版
2015/12/28 NodeJs
详解JavaScript跨域总结与解决办法
2016/10/31 Javascript
微信小程序 wx.request(接口调用方式)详解及实例
2016/11/23 Javascript
JS实现太极旋转思路分析
2016/12/09 Javascript
Node做中转服务器转发接口
2017/10/18 Javascript
微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析
2017/11/27 Javascript
axios拦截设置和错误处理方法
2018/03/05 Javascript
JS实现关键词高亮显示正则匹配
2018/06/22 Javascript
Vue项目中最新用到的一些实用小技巧
2018/11/06 Javascript
玩转Koa之koa-router原理解析
2018/12/29 Javascript
详解从react转职到vue开发的项目准备
2019/01/14 Javascript
javascript实现点击星星小游戏
2019/12/24 Javascript
python实现划词翻译
2020/04/23 Python
python基于Tkinter库实现简单文本编辑器实例
2015/05/05 Python
Python实现高效求解素数代码实例
2015/06/30 Python
Python3.6简单操作Mysql数据库
2017/09/12 Python
Python有参函数使用代码实例
2020/01/06 Python
在css3中background-clip属性与background-origin属性的用法介绍
2012/11/13 HTML / CSS
详解webapp页面滚动卡顿的解决办法
2018/12/26 HTML / CSS
canvas实现烟花的示例代码
2020/01/16 HTML / CSS
BrandAlley英国:法国折扣奢侈品网上零售商
2017/07/03 全球购物
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
军训自我鉴定
2013/12/14 职场文书
士力架广告词
2014/03/20 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
离职感谢信怎么写
2015/01/22 职场文书
酒店前台接待岗位职责
2015/04/02 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
oracle删除超过N天数据脚本的方法
2022/02/28 Oracle
「地球外少年少女」BD发售宣传CM公开
2022/03/21 日漫