给Jquery动态添加的元素绑定事件
来源:互联网 发布:广州三支箭网络 编辑:程序博客网 时间:2024/05/17 02:44
给Jquery动态添加的元素绑定事件
我想很多人都会向我一样曾经 被新元素的事件绑定困惑很久也就是
在页面加载完成后给元素绑定了事件,但又新增加的元素上却没有绑定任何事件。
js的事件监听跟css不一样,css只要设定好了样式,不论是原来就有的还是新添加的,都有一样的表现。而事件监听不是,你必须给每一个元素单独绑定事件。
常见的例子是处理表格的时候。每行行末有个删除按钮,点了这个能够删除这一行。
<table>
<tbody>
<tr>
<td>这行原来就有</td>
<td><buttonclass="del">删除</button></td>
</tr>
<tr>
<td>这行原来就有</td>
<td><buttonclass="del">删除</button></td>
</tr>
</tbody>
</table>
</table>
通常,我会这么绑定
对于在domready之前就存在的删除按钮,一切都很完美。但如果在domready之后用js动态添加几行,那新增的几行中的这些按钮都将失去任何作用。
如何解决这个问题?以下提供4种解决方案:
=============================
1号解决方案——onclick法
如果不顾结构与行为分离的准则的话,通常,我会这么做。注意,此时的deltr这个function必须是全局函数,得放jQuery(function($) {})外面,放里边就成局部函数了,html里的onclick就调用不到了!
- <td><buttononclick="deltr(this)">删除</button></td>
- jQuery(function($){
-
-
$ -
$ -
- });
- //删除行的函数,必须要放domready函数外面
- function
deltr(delbtn){ -
$ - };
=============================
2号解决方案——重复绑定法
即,在domready的时候就给已有的元素绑定事件处理函数,而后当新增加的元素的时候再次绑定。
- <td><buttonclass="del">删除</button></td>
- jQuery(function($){
-
-
-
deltr(){ -
$ -
-
-
$ -
-
$ -
$ -
-
. -
. -
- });
=============================
3号解决方案——事件冒泡法
利用事件冒泡的原理,我们给这个按钮的祖先元素绑定事件处理函数。然后通过event.target这个对象来判断,这个事件是不是我们要找的对象触发的。
通常可以利用一些DOM属性,比如event.target.className、event.target.tagName等之类的来判断。
- <td><buttonclass="del">删除</button></td>
- jQuery(function($){
-
-
$ { -
(e.target.className=="del"){ -
$ -
-
-
-
$ -
$ -
- });
另外,可以使用on进行绑定,如下:
$(document).on('click','.name', function() {
//处理代码
});
修改动态添加元素的样式或事件:由于ajax是异步的,如果你的方法和ajax在同一级,ajax还没接到返回结果,就已经执行了你那个方法了,所以你要把你的的方法放到ajax()的success里面。也可以在ajax()的success里把要获取的元素设置为全局变量,用来在外部事件中调用。
0 0
- jQuery 给动态添加元素绑定事件
- jQuery给动态添加的元素绑定事件的方法
- jQuery给动态添加的元素绑定事件的方法
- jQuery给动态添加的元素绑定事件的方法
- jQuery给动态添加的元素绑定事件的方法
- jQuery给动态添加的元素绑定事件
- jQuery 1.9后给动态添加的元素绑定事件
- 给Jquery动态添加的元素绑定事件
- jQuery给动态添加的元素绑定事件
- 给Jquery动态添加的元素绑定事件
- jQuery给动态添加的元素绑定事件
- JQuery给动态添加的元素绑定事件
- JQuery给动态添加的元素绑定事件
- 给动态添加的元素绑定事件
- jQuery动态添加的元素绑定事件
- jquery on() 给js动态新添加的元素 绑定的点击事件。
- Jquery给动态添加的元素绑定事件:live() delegate() on()
- 给动态添加的元素绑定事件 live
- fresco jar包冲突
- ≪统计学习精要(The Elements of Statistical Learning)≫课堂笔记(十)
- mina框架之三
- java正则表达式
- ios 使用NSURlSession 下载文件并且使用进度条进行文件下载进度读取以及打开附件(word,excel,ppt,pdf)显示
- 给Jquery动态添加的元素绑定事件
- A20集成rt5572驱动
- Java8中时间日期库的20个常用使用示例
- Ubuntu中Git服务器搭建
- ≪统计学习精要(The Elements of Statistical Learning)≫课堂笔记(十一)
- AES秘钥生成
- 在移动端,body:overflow 无效的问题
- 前端开发人员须知html5和html4之间的区别
- ≪统计学习精要(The Elements of Statistical Learning)≫课堂笔记(十二)