克隆可拖动的deepWithDataAndEvents = true无法再次拖动

时间:2014-10-13 15:02:34

标签: javascript jquery html css jquery-ui

我希望能够:

  • 克隆可拖动的并且可以重新拖动它们
  • 保留数据&与初始可拖动div相关联的事件

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

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

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/

1 个答案:

答案 0 :(得分:1)

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

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

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

从示例中可以看出,您需要从克隆中保留行为方式。如果您能澄清我将尽力确保满足您的需求:)

委托事件通过侦听冒泡到不变的祖先的事件来工作。如果没有方便/接近的话,document是默认值。它然后将jQuery选择器应用于bubble链中的元素。 然后为导致事件的任何匹配元素调用函数。这意味着元素在事件时间之前不必匹配,而不是在创建事件处理程序时匹配。

注意:请勿将'body'用于委派事件,因为样式可能会导致body高度为0,并且可能不会发生事件!始终使用document作为后备。