Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 克隆的Dragable with deepWithDataAndEvents=true无法再次拖动_Javascript_Jquery_Html_Css_Jquery Ui - Fatal编程技术网

Javascript 克隆的Dragable with deepWithDataAndEvents=true无法再次拖动

Javascript 克隆的Dragable with deepWithDataAndEvents=true无法再次拖动,javascript,jquery,html,css,jquery-ui,Javascript,Jquery,Html,Css,Jquery Ui,我希望能够: 克隆可拖动项并能够重新拖动它们 保留与初始可拖动div关联的数据和事件 当前,当.clone方法设置为clone()时,可以拖动克隆的可拖动文件,但可以理解克隆不会保留初始可拖动文件中的数据 如果使用clone(true),则克隆的可拖动文件将保留初始可拖动文件中的数据,但无法拖动 var dropped = jQuery(ui.draggable).clone().addClass("dropped").draggable(); //No data var dropped =

我希望能够:

  • 克隆可拖动项并能够重新拖动它们
  • 保留与初始可拖动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

有人知道问题出在哪里吗?非常感谢您的帮助。这是我一直在研究的JSFIDLE-

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

从这个例子来看,从行为上看,您需要从克隆中保留什么并不是100%明显的。如果您能澄清,我将尽力确保这符合您的需要:)

委派事件的工作方式是侦听向未更改的祖先冒泡的事件<代码>文档是默认值,如果没有任何方便/更接近的内容。然后将jQuery选择器应用于气泡链中的元素。然后,它为导致事件的任何匹配元素调用该函数。这意味着直到事件发生时,元素才必须匹配,而不是在创建事件处理程序时


注意:不要对委派事件使用
'body'
,因为样式设置可能会导致
body
的高度为0,并且事件可能不会发生!始终使用
文档
作为备用。

谢谢!它工作得很好。为同样提到委托活动而欢呼,我读了一本书,现在对事件的理解稍微好一点。衷心感谢您的帮助@肖恩·劳:还为您添加了我通常用简单英语解释的委托活动。干杯谢谢,谢谢!
jQuery(document).on('click', '.component', function() {
  alert($( this ).data( 'name' ));
});