如何保留此 jQuery 事件处理程序



我在 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 );
} 

最新更新