JQuery UI 可拖动 - 辅助函数 returns clone() 仅在参数传递给 clone() 时克隆一次
JQuery UI Draggable - Helper function which returns clone() only clones once if arguments passed to clone()
我正在克隆元素,因为它们是使用 JQuery 的 clone()
方法从 JQuery UI 可拖动列表中拖出的。查看 clone()
documentation,我发现我可以通过将一个或两个布尔参数 (true,true)
传递给 clone()
方法来克隆已经绑定到这些元素的事件。
通过传递这些参数,事情变得很奇怪。如果我只使用 clone()
如下所示,一切都会按预期进行。
$(".draggable").draggable({
connectToSortable: ".sortable",
helper: function(e) {
return $(this).clone();
}
});
在上面的示例中,我获得了无限制的克隆,但我与克隆元素相关的事件也没有被克隆。那么,很自然地,我想为这个 clone()
方法添加一两个参数,以便我也可以克隆事件!
$(".draggable").draggable({
connectToSortable: ".sortable",
helper: function(e) {
return $(this).clone(true);
}
});
但这使得事情只能克隆一次。请参阅下面的 fiddle 示例!
这是一个 fiddle 和 clone(true)
,它只克隆一次:
http://jsfiddle.net/og937wy7/9/
这里有一个 fiddle 和 clone()
,它克隆了很多次。
http://jsfiddle.net/og937wy7/10/
如果我明白你的意思,你想多次克隆该元素。只需从 clone(true, true) 中删除参数即可解决问题:
$(".sortable").sortable({
});
$(".draggable").draggable({
connectToSortable: ".sortable",
helper: function(e) {
return $(this).clone();
}
});
我相信你在辅助选项中误用了 "clone"
- 你不能将方法指定为字符串,字符串只是 jQueryUI 如何处理拖动元素的标识符。您可以提供一个方法(可调用)或一个字符串,如 in the docs.
如果将辅助选项设置为 "clone"
而不是 "clone(true, true)"
,将复制拖动的元素(当 "dragged" 时),正如我在 fiddle,事件也附加到它(因为您正确绑定事件)。
在您的 fiddle 中试试这个:
$(".sortable").sortable({
});
$(".draggable").draggable({
connectToSortable: ".sortable",
helper: "clone"
});
我正在克隆元素,因为它们是使用 JQuery 的 clone()
方法从 JQuery UI 可拖动列表中拖出的。查看 clone()
documentation,我发现我可以通过将一个或两个布尔参数 (true,true)
传递给 clone()
方法来克隆已经绑定到这些元素的事件。
通过传递这些参数,事情变得很奇怪。如果我只使用 clone()
如下所示,一切都会按预期进行。
$(".draggable").draggable({
connectToSortable: ".sortable",
helper: function(e) {
return $(this).clone();
}
});
在上面的示例中,我获得了无限制的克隆,但我与克隆元素相关的事件也没有被克隆。那么,很自然地,我想为这个 clone()
方法添加一两个参数,以便我也可以克隆事件!
$(".draggable").draggable({
connectToSortable: ".sortable",
helper: function(e) {
return $(this).clone(true);
}
});
但这使得事情只能克隆一次。请参阅下面的 fiddle 示例!
这是一个 fiddle 和 clone(true)
,它只克隆一次:
http://jsfiddle.net/og937wy7/9/
这里有一个 fiddle 和 clone()
,它克隆了很多次。
http://jsfiddle.net/og937wy7/10/
如果我明白你的意思,你想多次克隆该元素。只需从 clone(true, true) 中删除参数即可解决问题:
$(".sortable").sortable({
});
$(".draggable").draggable({
connectToSortable: ".sortable",
helper: function(e) {
return $(this).clone();
}
});
我相信你在辅助选项中误用了 "clone"
- 你不能将方法指定为字符串,字符串只是 jQueryUI 如何处理拖动元素的标识符。您可以提供一个方法(可调用)或一个字符串,如 in the docs.
如果将辅助选项设置为 "clone"
而不是 "clone(true, true)"
,将复制拖动的元素(当 "dragged" 时),正如我在 fiddle,事件也附加到它(因为您正确绑定事件)。
在您的 fiddle 中试试这个:
$(".sortable").sortable({
});
$(".draggable").draggable({
connectToSortable: ".sortable",
helper: "clone"
});