1

我在 dom 元素上有一个点击甚至处理程序。

jQcurrentOption.click(function () {
 //IMPLEMENTATION
});

克隆此元素时,.cloneNode(true)它会丢失其事件处理程序:(。我知道我可以更改 jQuery(请注意,因此我仍在使用 1.4.4live而不是bind(1.7+))

jQcurrentOption.live("click",function(){
 //IMPLEMENTATION
});

但是我很好奇是否有办法保留这些处理程序而不用live(或bind)定义它们。有时我没有使用 jQuery 来应用的好处live

4

1 回答 1

2

你试过 jQueryclone()吗?

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 );
} 
于 2012-05-08T23:00:47.163 回答