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 相关文章推荐
JavaScript几种形式的树结构菜单
May 10 Javascript
从零开始学习jQuery (十) jQueryUI常用功能实战
Feb 23 Javascript
[原创]推荐10款最热门jQuery UI框架
Aug 19 Javascript
AngularJS基础学习笔记之表达式
May 10 Javascript
Javascript 是你的高阶函数(高级应用)
Jun 15 Javascript
JavaScript 模块的循环加载实现方法
Dec 13 Javascript
详解JavaScript对象的深浅复制
Mar 30 Javascript
vue.js组件之间传递数据的方法
Jul 10 Javascript
vue引入ueditor及node后台配置详解
Jan 03 Javascript
详解JavaScript中的数组合并方法和对象合并方法
May 11 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
Jun 04 Javascript
Vue动态生成表格的行和列
Jul 18 Javascript
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
JAVA/JSP学习系列之二
2006/10/09 PHP
ThinkPHP实现更新数据实例详解(demo)
2016/06/29 PHP
jQuery事件 delegate()使用方法介绍
2012/10/30 Javascript
查看大图功能代码jquery版
2013/11/05 Javascript
javascript实现2048游戏示例
2014/05/04 Javascript
jquery实现的一个简单进度条效果实例
2014/05/12 Javascript
jquery实现html页面 div 假分页有原理有代码
2014/09/06 Javascript
JavaScript中switch语句的用法详解
2015/06/03 Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
2016/09/21 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
JavaScript Uploadify文件上传实例
2017/02/28 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
微信小程序开发之自定义tabBar的实现
2018/09/06 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
javascript实现点击星星小游戏
2019/12/24 Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
2020/04/22 Javascript
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
python爬取淘宝商品详情页数据
2018/02/23 Python
对python的unittest架构公共参数token提取方法详解
2018/12/17 Python
python 同时运行多个程序的实例
2019/01/07 Python
Django重置migrations文件的方法步骤
2019/05/01 Python
Python实现Restful API的例子
2019/08/31 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
深入浅析Python 命令行模块 Click
2020/03/11 Python
Python文件操作基础流程解析
2020/03/19 Python
Django之腾讯云短信的实现
2020/06/12 Python
Django修改app名称和数据表迁移方案实现
2020/09/17 Python
canvas绘制表情包的示例代码
2018/07/09 HTML / CSS
塔吉特百货公司官网:Target
2017/04/27 全球购物
银行实习生自我鉴定范文
2013/09/19 职场文书
政府门卫岗位职责
2014/04/29 职场文书
父亲婚礼答谢词
2015/01/04 职场文书
副总经理岗位职责
2015/02/02 职场文书
2016创先争优活动党员公开承诺书
2016/03/24 职场文书
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
2022/04/06 Python