【发布时间】:2016-06-28 02:57:29
【问题描述】:
我正在使用 jquery sortable 对多个容器中的元素进行排序。
我将帮助选项设置为“克隆”,就像这样
$("#sup").sortable({
helper: "clone"
});
所以这里发生的事情是,当一个元素开始拖动时,jQuery 创建一个副本并将其附加到正文中,这成为实际被拖动的元素(助手),而不是原始元素。
拖动开始时,我的助手可能会改变位置。然而,jQuery 认为助手是它放置的位置,即使我使用边距更改了它的位置,但当将元素放入容器中时,助手实际上并没有覆盖它(因为我更改了助手位置)。
问题:我如何让 jQuery 在我更改助手后重新计算它的位置?
$("#sup").sortable({
helper: "clone",
start: function(event, ui) {
var marginsToSet = ui.item.data().sortableItem.margins;
// helper position changed
ui.helper.css('margin-left', marginsToSet.left);
ui.helper.css('margin-top', marginsToSet.top);
}
});
示例:http://codepen.io/anon/pen/qZaNJZ 您可以看到占位符突出显示将转到下一个容器,即使它没有完全悬停在它上面。因为块位置不是 jquery 设置的。
【问题讨论】:
标签: jquery jquery-ui jquery-ui-sortable helper