jquery学习 - 对动态创建的元素进行事件响应(bind, live, delegate)
2015-04-22 01:37
561 查看
事件响应
其实我们平时对网页上的元素进行响应,例如点击(onclick),更改(onchange)这些事件的时候,都比较简单。因为jquery都封装好了,直接$('elementID').click()就可以了。
动态添加元素
使用js控制页面的元素添加与删除是非常频繁的一个操作,很容易发现,假如我们的页面代码如下:<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <!-- jQuery文件。--> <script src="http://www.w3school.com.cn/jquery/jquery.js"></script> <script> $(document).ready(function() { $('#btnone').click(function() { $('.row').append('<button id="btntwo">按钮2</button>'); }); $('#btntwo').click(function() { alert("click me!"); }); }); </script> </head> <body> <div class="container"> <div class="row"> <button id="btnone">按钮1</button> </div> </div> </body> </html>
可以很容易的看出来,页面上只有一个
按钮1,当我们点击的时候会出现一个
按钮2,其实我们已经写好了
按钮2的点击事件,但是当我们不管怎么点击的时候,发现根本不会有任何变化。
这就是因为其实最开始页面上不存在的元素,jquery的
click是没有绑定到元素的。
原因:
因为click或者change这些方法都是用bind来实现的。
对动态元素绑定
既然用bind不能实现,用什么可以实现呢?live()
delegate()
这两个都可以实现。这两个方法都可以对未存在于DOM中的元素进行事件响应。所以上面的代码:
$('#btntwo').click(function() { alert("click me!"); });
要换成如下代码:
$('#btntwo').live('click', function() { alert("click me!"); });
或者换成如下代码:
$(document).delegate('#btntwo', 'click', function() { alert("click me!"); });
就可以生效了。
live和delegate的不同
我通过看W3c live 页面和W3c delegate 页面对比后发现。好像唯一不同的地方在于:
live
live() 方法为被选元素附加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。
delegate
delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。
就是delegate是处理的指定元素的子元素。
想学习两个函数的详细用法,可以点击上面两个超链接,查看。
相关文章推荐
- jquery学习 - 对动态创建的元素进行事件响应(bind, live, delegate)
- Jquery给动态添加的元素绑定事件:live() delegate() on()
- 使用livequery插件对动态创建的DOM元素进行事件绑定
- 如何让动态创建的页面元素响应用户事件 (HTML/javascript/jQuery/Ajax/DOM)
- jquery 事件委托三种事件绑定方式.bind(),.live(),.delegate()
- ☀【jQuery事件绑定】one / bind / live / delegate / on
- jQuery向动态生成的内容添加事件响应(jquery live方法简介)
- jQuery的事件处理方法介绍 - bind(),live(),delegate(),on()
- jQuery 2.0.3 源码分析 事件绑定 - bind/live/delegate/on
- jQuery事件绑定方法bind、 live、delegate和on的区别
- jquery事件绑定 on() bind() live() delegate()
- jQuery中事件绑定bind、live、delegate、on方法
- jquery的on、off、one、bind、delegate、live、die绑定事件方法研究
- jquery中的 delegate 可以让 代码中动态加入td元素,同样会被赋予单击事件!
- js动态加载元素的事件响应--jquery解决
- jquery动态添加元素绑定事件学习记录
- jQuery 绑定事件到动态创建的元素上的方法实例
- 用jQuery绑定事件到动态创建的元素上
- JQ中将事件绑定在动态添加的标签上(live/on/bind/delegate)
- Jquery中的bind(),live(),delegate(),on()绑定事件方式