时间:2021-05-26
给jquery动态生成的页面元素添加事件?使用livequery插件,或可以使用jquery的live方法。摘录一段live简单使用方法。
更多详情还见官网 http://api.jquery.com/live/
live(type, [data],fn)
概述
jQuery给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的也有效。
这个方法是基本是的 .bind() 方法的一个变体。使用 .bind()时,选择器匹配的元素会附加一个事件处理函数,而以后再添加的元素则不会有。为此需要再使用一次 .bind() 才行。比如说
Click here
可以给这个元素绑定一个简单的click事件:
$('.clickme').bind('click', function() {
alert("Bound handler called.");
});
当点击了元素,就会弹出一个警告框。
然后,想象一下这之后有另一个元素添加进来了。
$('body').append('
Another target
');
尽管这个新的元素也能够匹配选择器".clickme" ,但是由于这个元素是在调用 .bind() 之后添加的,所以点击这个元素不会有任何效果。
.live()就提供了对应这种情况的方法。如果我们是这样绑定click事件的:
$('.clickme').live('click', function() {
alert("Live handler called.");
});
然后再添加一个新元素:
$('body').append('
Another target
');
然后再点击新增的元素,他依然能够触发事件处理函数。
事件委托
.live()方法能对一个还没有添加进DOM的元素有效,是由于使用了事件委托:绑定在祖先元素上的事件处理函数可以对在后代上触发的事件作出回应。
传递给 .live()的事件处理函数不会绑定在元素上,而是把他作为一个特殊的事件处理函数,绑定在 DOM树的根节点上。在我们的例子中,当点击新的元素后,会依次发生下列步骤:
1、生成一个click事件传递给<div> 来处理
2、由于没有事件处理函数直接绑定在 <div>上,所以事件冒泡到DOM树上
3、事件不断冒泡一直到DOM树的根节点,默认情况下上面绑定了这个特殊的事件处理函数。
4、执行由 .live() 绑定的特殊的click 事件处理函数。
5、这个事件处理函数首先检测事件对象的target 来确定是不是需要继续。这个测试是通过检测 $(event.target).closest('.clickme')能否找到匹配的元素来实现的。
6、如果找到了匹配的元素,那么调用原始的事件处理函数。
由于只有在事件发生时才会在上面的第五步里做测试,因此在任何时候添加的元素都能够响应这个事件。
附加说明
.live()虽然很有用,但由于其特殊的实现方式,所以不能简单的在任何情况下替换 .bind()。主要的不同有:
在jQuery 1.4中,.live()方法支持自定义事件,也支持所有的JavaScript 事件。在jQuery 1.4.1中,甚至也支持 focus 和 blue事件了(映射到更合适,并且可以冒泡的focusin和focusout上)。
另外,在jQuery1.4.1中,也能支持hover(映射到"mouseenter mouseleave")。然而在jQuery1.3.x中,只支持支持的JavaScript事件和自定义事件:click, dblclick, keydown, keypress,keyup, mousedown, mousemove, mouseout, mouseover, 和 mouseup.
.live()并不完全支持通过DOM遍历的方法找到的元素。取而代之的是,应当总是在一个选择器后面直接使用 .live()方法,正如前面例子里提到的。
当一个事件处理函数用 .live()绑定后,要停止执行其他的事件处理函数,那么这个函数必须返回 false。 仅仅调用 .stopPropagation()无法实现这个目的。
参考 .bind() 方法可以获得更多关于事件绑定的信息。
在jQuery 1.4.1中,你可以一次绑定多个事件给 .live() ,跟.bind() 提供的功能类似。
在jQuery 1.4中,data参数可以用于把附加信息传递给事件处理函数。一个很好的用处是应付由闭包导致的问题。可以参考 .bind()的讨论来获得更多信息。
参数
typeString 事件类型
data(可选) Object 欲绑定的事件处理函数
fn Function 欲绑定的事件处理函数
示例
HTML 代码:
Click me!
jQuery 代码:
$("p").live("click", function(){
$(this).after("
Another paragraph!
");
});
描述:
阻止默认事件行为和事件冒泡,返回false
jQuery 代码:
$("a").live("click", function() { returnfalse; });
描述:
仅仅阻止默认事件行为
jQuery 代码:
$("a").live("click", function(event){
event.preventDefault();
});
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
jquery1.10去除了.live()方法,新增了一个.on()方法来给元素绑定事件,具体用法如下:on(events,[selector],[data],f
本文实例讲述了jQuery中die()方法用法。分享给大家供大家参考。具体分析如下:此方法移除所有通过live()方法向指定元素添加的一个或多个事件处理程序。语
本文实例讲述了jQuery中live()方法用法。分享给大家供大家参考。具体分析如下:此方法为匹配元素添加一个或多个事件,并规定当这些事件发生时运行的函数。特别
对于jQuery中的事件绑定方法,主要有on()、bind()、delegate()、live()等这几个方法。之前都是之前拿过来用,也知道有这么几个方法,但是
本文实例讲述了jQuery中的jQuery()方法用法。分享给大家供大家参考。具体如下:jQuery()方法的定义和用法:此方法可以接受一组选择器,用于匹配相应