JS获取动态添加元素的方法详解


Posted in Javascript onJuly 31, 2019

本文实例讲述了JS获取动态添加元素的方法。分享给大家供大家参考,具体如下:

在页面的渲染中,我们经常用遇到动态添加的DOM元素,那么在获取这些元素的时候或则为这些DOM元素的时候,我们有下面三种处理方法:

  • 1.  在模板引擎里面添加行内事件
  • 2.  利用事件的委托获取(常用)
  • 3.  在ajax的监听响应完成函数后面获取

一 在模板引擎里面添加行内事件

添加行内事件就是在标签里面添加事件,这样就可以直接获取到动态添加的元素.

<!-- 1.准备一个模板 -->
  <script id="tpl-table" type="text/html">
    {{ each rows value key }}
      <tr>
        <td>
            <button type="button" onclick="updateUser({{ value.id }} {{@ ','}} {{value.isDelete}})" id="btn-status" >按钮</button>
        </td>
      </tr>
    {{ /each }}
  </script>
//事件函数,书写在单独的JS文件中
  //带有参数,参数是模板传递过来的
  function updateUser (id,isDelete){
      //doSomething.........
  }

上面使用的模板是art-template,在模板里面我们给button标签注册了点击事件onclick,但是事件函数却是一个带参数的函数.当点击这个按钮的时候,就会触发点击事件,进而调用updateUser()函数.

二. 利用事件的委托获取(常用)

事件的委托可以为动态添加的元素绑定事件.

//同样以上面的代码为例,tr最后是添加到table中,那么将点击事件委托给table
$('table').on('click','tr #btn-status',function(){
    //doSomething........
})

上面的代码意思是,将点击事件绑定给table元素,但是我们点击的是table里面的button按钮,此时事件的冒泡起作用,向外冒泡遇到父元素table也有点击事件,那么就会去执行这个事件.

三 在ajax的监听响应完成函数后面获取

当我们把模板渲染出来的时候,此时页面上已经是最新的动态元素了,DOM也已经重绘完成,此时再去获取动态元素.

$.ajax({
    url : 'text.php',
    dataType : 'json',
    success : function(obj){
        //渲染动态元素到页面上
        var trHTML = template('tpl-table',obj);
        $('table').append(trHTML);
        //获取动态元素注册点击事件
        $('tr #btn-status').on('click',function(){
            //doSomething........
        });
    }
})

四 总结:

第一种方法要注意事件函数必须是全局函数;第二种最常用,但是三者的共同点都是当页面已经渲染完毕后才能获取到动态元素.

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

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

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

Javascript 相关文章推荐
学习jquery之一
Apr 27 Javascript
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码
Aug 13 Javascript
扩展easyui.datagrid,添加数据loading遮罩效果代码
Nov 02 Javascript
js禁止回车提交表单的示例代码
Dec 23 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
May 05 Javascript
纯js实现重发验证码按钮倒数功能
Apr 21 Javascript
Angularjs之filter过滤器(推荐)
Nov 27 Javascript
Vue下拉框回显并默认选中随机问题
Sep 06 Javascript
vue环形进度条组件实例应用
Oct 10 Javascript
js中数组对象去重的两种方法
Jan 18 Javascript
返回上一个url并刷新界面的js代码
Sep 12 Javascript
vite+vue3.0+ts+element-plus快速搭建项目的实现
Jun 24 Vue.js
JS/jQuery实现超简单的Table表格添加,删除行功能示例
Jul 31 #jQuery
详解Vuex下Store的模块化拆分实践
Jul 31 #Javascript
ES6 Iterator接口和for...of循环用法分析
Jul 31 #Javascript
Vuex 模块化使用详解
Jul 31 #Javascript
判断“命令按钮”是否被鼠标单击详解
Jul 31 #Javascript
express框架下使用session的方法
Jul 31 #Javascript
ES6中异步对象Promise用法详解
Jul 31 #Javascript
You might like
COM in PHP (winows only)
2006/10/09 PHP
ThinkPHP模板输出display用法分析
2014/11/26 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
2015/11/05 PHP
Zend Framework分发器用法示例
2016/12/11 PHP
PHP第三方登录―QQ登录实现方法
2017/02/06 PHP
thinkPHP事务操作简单案例分析
2019/10/17 PHP
Jquery中增加参数与Json转换代码
2009/11/20 Javascript
jQuery对表单的操作代码集合
2011/04/06 Javascript
JavaScript中的闭包(Closure)详细介绍
2014/12/30 Javascript
EsLint入门学习教程
2017/02/17 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
2017/06/11 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
总结js函数相关知识点
2018/02/27 Javascript
Node.js使用Angular简单示例
2018/05/11 Javascript
Vue.js点击切换按钮改变内容的实例讲解
2018/08/22 Javascript
vue+axios+element ui 实现全局loading加载示例
2018/09/11 Javascript
详解vue2.0 资源文件assets和static的区别
2018/11/27 Javascript
开发Node CLI构建微信小程序脚手架的示例
2020/03/27 Javascript
在Python的循环体中使用else语句的方法
2015/03/30 Python
Python检查ping终端的方法
2019/01/26 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
python根据时间获取周数代码实例
2019/09/30 Python
基于python3监控服务器状态进行邮件报警
2019/10/19 Python
详解Django admin高级用法
2019/11/06 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
2020/03/02 Python
Python IDLE或shell中切换路径的操作
2020/03/09 Python
canvas实现手机的手势解锁的步骤详细
2020/03/16 HTML / CSS
泰国在线书店:SE-ED
2020/06/21 全球购物
实习单位接收函
2014/01/11 职场文书
搞笑获奖感言
2014/01/30 职场文书
户外宣传策划方案
2014/05/25 职场文书
考试作弊检讨书范文
2015/01/27 职场文书
财务稽核岗位职责
2015/04/13 职场文书
英文投诉信格式
2015/07/03 职场文书
家长必看:义务教育,不得以面试 评测等名义选拔学生
2019/07/09 职场文书
python glom模块的使用简介
2021/04/13 Python