如果我使用“element.onclick = function(){...};”向元素添加本机事件处理程序语法,后来我用jQuery clone api克隆元素,使用'true'参数,然后克隆元素不会获得本机添加的事件处理程序。我怎么能解决它,如果我上面使用的本机语法是必须的(所以请不要给我一个答案,比如“use $(element).click(function(e){...}); “等等。)。
在代码中:
编辑:请检查jsfiddle:http://jsfiddle.net/86f96/
答案 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()或重新定义事件。