标签:http io color ar os 使用 java sp div
jQuery 给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的也有效。鹤峰县烟草专卖局
这个方法是基本是的 .bind() 方法的一个变体。使用 .bind() 时,选择器匹配的元素会附加一个事件处理函数,而以后再添加的元素则不会有。为此需要再使用一次 .bind() 才行。比如说:
1 |
< body > |
2 |
< div class = "clickme" >Click here</ div > |
3 |
</ body > |
可以给这个元素绑定一个简单的click事件:
1 |
$( ‘.clickme‘ ).bind( ‘click‘ , function () { |
2 |
alert( "Bound handler called." ); |
3 |
}); |
当点击了元素,就会弹出一个警告框。然后,想象一下这之后有另一个元素添加进来了。鹤峰县烟草专卖局
1 |
$( ‘body‘ ).append( ‘<div class="clickme">Another target</div>‘ ); |
尽管这个新的元素也能够匹配选择器 ".clickme" ,但是由于这个元素是在调用 .bind() 之后添加的,所以点击这个元素不会有任何效果。.live() 就提供了对应这种情况的方法。如果我们是这样绑定click事件的:
1 |
$( ‘.clickme‘ ).live( ‘click‘ , function () { |
2 |
alert( "Live handler called." ); |
3 |
}); |
增加一个新 div
然后再点击新增的元素,他依然能够触发事件处理函数。
.live() 方法能对一个还没有添加进DOM的元素有效,是由于使用了事件委托:绑定在祖先元素上的事件处理函数可以对在后代上触发的事件作出回应。传递给 .live() 的事件处理函数不会绑定在元素上,而是把他作为一个特殊的事件处理函数,绑定在 DOM 树的根节点上。在我们的例子中,当点击新的元素后,会依次发生下列步骤:
由于只有在事件发生时才会在上面的第五步里做测试,因此在任何时候添加的元素都能够响应这个事件。
.live() 虽然很有用,但由于其特殊的实现方式,所以不能简单的在任何情况下替换 .bind()。主要的不同有:
参考 .bind() 方法可以获得更多关于事件绑定的信息。
在jQuery 1.4.1中,你可以一次绑定多个事件给 .live() ,跟 .bind() 提供的功能类似。
在jQuery 1.4 中,data参数可以用于把附加信息传递给事件处理函数。一个很好的用处是应付由闭包导致的问题。可以参考 .bind() 的讨论来获得更多信息。
标签:http io color ar os 使用 java sp div
原文地址:http://www.cnblogs.com/xiaoyang002/p/4083998.html