jquery clone(),深度复制影响draggable

时间:2016-10-07 20:07:47

标签: javascript jquery

我有一个应用程序,其中单击按钮并创建DOM元素的克隆副本并将其放置在页面上的特定位置。这个克隆的副本需要是一个深层副本,因为它的子元素中包含事件。因此,创建克隆的代码是:

var $cloneTags = $div.clone(true, true).attr('id', obj + num);

然而,当添加true, true时,这会破坏克隆对象的可拖动功能(这只发生在第二个克隆和任何后续克隆)。如果我摆脱true, true,这行代码会做它应该做的事情,后续对象是可拖动的:

 $cloneTags.draggable({ cursor: "move", snap: '#dropHere', helper: "clone" });

但是这会影响子元素的事件处理程序不再起作用。

我的问题是如何创建深层副本但仍然可以将每个克隆元素单独拖动?

1 个答案:

答案 0 :(得分:1)

我的建议是确保子项中的所有事件都由“事件委托”管理,而不是直接绑定到元素本身。

然后你可以使用浅层克隆而不会遇到冲突

而不是:

$('.my-draggable-item .someChild').click(function(){...})

待办事项

$('#mainContainer').on('click', '.my-draggable-item .someChild', function(){...})