我正在尝试将 div 内容从一个地方复制到另一个地方,为此我正在使用类似的东西:
$('#newDiv').html($('#oldDiv').html());
问题是某些子元素使用 bind() jquery 方法附加了事件。我还想将这些事件复制到新位置。
关于如何进行此“事件复制”的任何想法?
我正在尝试将 div 内容从一个地方复制到另一个地方,为此我正在使用类似的东西:
$('#newDiv').html($('#oldDiv').html());
问题是某些子元素使用 bind() jquery 方法附加了事件。我还想将这些事件复制到新位置。
关于如何进行此“事件复制”的任何想法?
您在复制内容的那一刻就创建了动态内容。
您需要 jQuery.live()
或delegate()
方法将事件绑定到动态创建的 html。
选择.live()
或delegate()
取决于您使用的 jQuery 版本。
.live()从 jQuery 1.3 开始可用。为现在和将来匹配当前选择器的所有元素附加一个事件处理程序。
.delegate()从 jQuery 1.4.2 开始可用。根据一组特定的根元素,将处理程序附加到现在或将来与选择器匹配的所有元素的一个或多个事件。
查看我的示例和这个jsFiddle 演示
<div id="newDiv"></div>
<div id="oldDiv"><a>click me</a></div>
$("a").live("click",function() {
alert("click");
});
// copy content
$('#newDiv').html($('#oldDiv').html());
</p>
如果您使用 jquery Clone 方法,您可以设置一个参数来指定是否要保留事件...查看:http ://api.jquery.com/clone/
它应该做得很好。