javascript - 使用 deepWithDataAndEvents = true 克隆的可拖动无法再次拖动

标签 javascript jquery html css jquery-ui

我希望能够:

  • 克隆可拖动对象并能够重新拖动它们
  • 将数据和事件与初始可拖动 div 相关联

目前,将 .clone 方法设置为 clone(),可以拖动克隆的可拖动对象,但可以理解的是,克隆对象不会保留初始可拖动对象的数据。

如果使用 clone(true),克隆的可拖动对象保留初始可拖动对象的数据但不能被拖动。

var dropped = jQuery(ui.draggable).clone().addClass("dropped").draggable(); //No data
var dropped = jQuery(ui.draggable).clone(true).addClass("dropped").draggable(); //Not draggable

有人知道问题出在哪里吗?任何帮助是极大的赞赏。这是我一直在研究的 jsFiddle - http://jsfiddle.net/wc71z5to/

最佳答案

如果您能够更新到稍晚版本的 jQuery(我在 JSFiddle 中使用 19.2.),您可以使用委托(delegate)事件进行点击,而不必担心使用深度克隆。

http://jsfiddle.net/TrueBlueAussie/wc71z5to/2/

jQuery(document).on('click', '.component', function() {
  alert($( this ).data( 'name' ));
});

从示例中,您需要从克隆中保留的行为方面的内容并非 100% 明显。如果您能澄清,我会尽力确保这满足您的需求 :)

委托(delegate)事件通过监听冒泡到不变的祖先的事件来工作。 document 是默认的,如果没有什么方便/更接近的话。 然后将 jQuery 选择器应用于气泡链中的元素。它然后为引起该事件的任何匹配元素调用函数。这意味着该元素直到事件时间才必须匹配,而不是在创建事件处理程序时匹配。

注意:不要对委托(delegate)事件使用 'body',因为样式会导致 body 的高度为 0,事件可能不会发生!始终使用 document 作为后备。

关于javascript - 使用 deepWithDataAndEvents = true 克隆的可拖动无法再次拖动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26343052/

相关文章:

javascript - 支持 div 打开时避免在主要内容中滚动 - 仅限移动设备

javascript - 我希望湿度和人数字段与我的温度字段具有相同的功能

html - 将鼠标悬停在黑色背景上时,如何将文本从黑色更改为白色?

javascript - 有没有办法在不取消运行的情况下查看谷歌应用程序脚本中的记录器?

javascript - 使用 Mongoose 更新数组中的子文档

javascript - FB.init 失败,不断抛出 xd_arbiter.php 错误

javascript - 使用两个或多个 $(document).ready.. 会影响性能吗?

jquery - 我如何推送内容而不是覆盖在面板幻灯片上

javascript - 在固定大小的 div 中显示未知大小的图像

javascript - 如何将第一个元素与精确的内容匹配?