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 相关文章推荐
在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
Dec 02 Javascript
JavaScript mapreduce工作原理简析
Nov 25 Javascript
javascript 系统文件夹文件操作及参数介绍
Jan 08 Javascript
js完美的div拖拽实例代码
Jan 22 Javascript
js限制文本框只能输入中文的方法
Aug 11 Javascript
JS实现选中当前菜单后高亮显示的导航条效果
Oct 15 Javascript
javascript运算符——逻辑运算符全面解析
Jun 27 Javascript
javascript与jquery动态创建html元素示例
Jul 25 Javascript
Vue.js自定义指令的用法与实例解析
Jan 18 Javascript
微信小程序教程系列之新建页面(4)
Apr 17 Javascript
js实现文件上传功能 后台使用MultipartFile
Sep 08 Javascript
解决vue 单文件组件中样式加载问题
Apr 24 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+ajax 无刷新删除数据
2010/02/20 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
php屏蔽错误及提示的方法
2020/05/10 PHP
javascript eval函数深入认识
2009/02/21 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
2014/10/29 Javascript
JS+CSS实现简易的滑动门效果代码
2015/09/24 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
微信小程序 sha1 实现密码加密实例详解
2017/07/06 Javascript
vux uploader 图片上传组件的安装使用方法
2018/05/15 Javascript
Vue Element 分组+多选+可搜索Select选择器实现示例
2018/07/23 Javascript
axios使用拦截器统一处理所有的http请求的方法
2018/11/02 Javascript
vue路由守卫及路由守卫无限循环问题详析
2019/09/05 Javascript
原生JS实现天气预报
2020/06/16 Javascript
Vue跨域请求问题解决方案过程解析
2020/08/07 Javascript
python检测是文件还是目录的方法
2015/07/03 Python
python装饰器深入学习
2018/04/06 Python
python 读取竖线分隔符的文本方法
2018/12/20 Python
通过python扫描二维码/条形码并打印数据
2019/11/14 Python
Python with标签使用方法解析
2020/01/17 Python
TensorFlow 读取CSV数据的实例
2020/02/05 Python
Django 返回json数据的实现示例
2020/03/05 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
如何使用python socket模块实现简单的文件下载
2020/09/04 Python
利用CSS3实现文本框的清除按钮相关的一些效果
2015/06/23 HTML / CSS
爱淘宝:淘宝网购物分享平台
2017/04/28 全球购物
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
英国第一的滑雪服装和装备零售商:Snow+Rock
2020/02/01 全球购物
介绍一下UNIX启动过程
2013/11/14 面试题
优秀应届毕业生自荐信
2013/11/16 职场文书
班级入场式解说词
2014/02/01 职场文书
公务员年度考核个人总结
2015/02/12 职场文书
2015年七一建党节活动总结
2015/03/20 职场文书
自主招生英文自荐信
2015/03/25 职场文书
曾国藩励志经典名言37句,蕴含哲理
2019/10/14 职场文书
详解mysql三值逻辑与NULL
2021/05/19 MySQL
详解Laravel服务容器的优势
2021/05/29 PHP