我在dom元素上有一个click even处理程序。
jQcurrentOption.click(function () {
//IMPLEMENTATION
});
当克隆这个元素时.cloneNode(true)
它失去了它的事件处理程序:(。我知道我可以改变jQuery(注意我仍然使用1.4.4因此live
而不是{{1} }(1.7 +))
bind
但是我很好奇是否有办法保留这些处理程序而不用jQcurrentOption.live("click",function(){
//IMPLEMENTATION
});
(或live
)来定义它们。有时我没有使用jQuery来应用bind
的好处。
答案 0 :(得分:2)
您是否尝试过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 );
}