我在 dom 元素上有一个点击偶数处理程序。
jQcurrentOption.click(function () {
//IMPLEMENTATION
});
克隆此元素.cloneNode(true)
时,它将丢失其事件处理程序:(。我知道我可以更改 jQuery(请注意,我仍在使用 1.4.4,因此live
而不是bind
(1.7+))
jQcurrentOption.live("click",function(){
//IMPLEMENTATION
});
但是我很好奇是否有办法保留这些处理程序而无需用live
(或bind
)定义它们。有时我没有使用 jQuery 来应用live
的好处。
你试过jQuery的clone()
吗?
var $clone = jQcurrentOption.clone(true);
如果将事件处理程序作为参数传递true
,它将克隆事件处理程序。
除此之外,jQuery 1.4.4 支持 delegate()
,相当于 1.7 的on()
:
$("select").delegate("option.current", "click", function () {
//IMPLEMENTATION
});
这样,您的单个元素就不需要复制事件处理程序。
只是为了说明一点:尽管delegate()
从 1.7 开始被弃用,但它确实与更现代的on()
相同,唯一的区别是参数顺序。下面是当前的实现 (1.7.2):
delegate: function( selector, types, data, fn ) {
return this.on( types, selector, data, fn );
}