jQuery clone api不会克隆本机javascript事件

时间:2011-11-04 10:18:21

标签: jquery events clone native

如果我使用“element.onclick = function(){...};”向元素添加本机事件处理程序语法,后来我用jQuery clone api克隆元素,使用'true'参数,然后克隆元素不会获得本机添加的事件处理程序。我怎么能解决它,如果我上面使用的本机语法是必须的(所以请不要给我一个答案,比如“use $(element).click(function(e){...}); “等等。)。

在代码中:

编辑:请检查jsfiddle:http://jsfiddle.net/86f96/

2 个答案:

答案 0 :(得分:1)

您不能在同一页面上拥有ID为btn的2个元素。

编辑:

我看了一下jsfiddle,遗憾的是,除了在追加clone

之后再次附加点击事件之外,我无法想出一个不同的解决方案

编辑2:

这与我得到的一样,没有更改原生JS onclick事件。因此,如果由于某种原因,您无法更改以前定义的函数,这将有所帮助:

var element = document.getElementById('element');
document.getElementById('element').onclick = function() { alert( 'clicked' ); };
//...
var clone = $(element).clone(true);
var native_click_function = $(element)[0].onclick;
$(element).remove();
clone.appendTo('body').click(function(){
    native_click_function();
});

代码取自JS小提琴。

答案 1 :(得分:0)

追加并附加不要传递事件。有些人认为它是一个错误,有些人认为它是一个功能,唉,唯一的办法是使用live()或重新定义事件。