我有<的可拖动列表li>我能够拖入另一个空的< ul>元件。如果我拖第一个< li>可拖动原件的元素< ul>一切正常......
问题:
...但是当我拖动任何其他< li>当我越过可接收的可排序的边界时,该列表的元素“帮助者”离开鼠标指针。 ul>。更准确地说,它会移动到列表的顶部。
有没有人见过这个并知道解决方案? 好吧,我的问题是,我只是使用jquery,并没有真正深入到它,也从未真正使用过javascript。
有关此问题的详细信息:
我的jQuery代码:
$(document).ready(function() {
$('#roleList > li').draggable({
connectToSortable: '#roleDrop',
containment: '#container',
revert: 'invalid'
});
$('#roleDrop').sortable({
cursor: 'move',
containment: '#container',
revert: true,
update: function() {
var order = $('#roleDrop').sortable('serialize');
$.ajax({
type: 'POST',
url: '".$postUrl."',
dataType: 'html',
data: order
});
}
});
$('#roleList').disableSelection();
});
虽然#roleList和#roleDrop是上述无序列表,但#container是一个表。
现在是发生了什么的屏幕截图。
我开始拖动项目:
当我越过第二个< ul>帮手跳了起来。
如果您还需要xhtml标记,请告诉我。
答案 0 :(得分:9)
尝试将helper: 'clone'
添加到您的.draggable
选项中:
$('#roleList > li').draggable({
helper: 'clone',
connectToSortable: '#roleDrop',
containment: '#container',
revert: 'invalid'
});
根据the jQuery documentation,您应该在将draggable连接到可排序时设置此选项。
虽然这会产生不同的界面体验(拖动的项目被克隆而不是移动),但至少是文档暗示的已知问题的临时解决方法。在#roleList
更新回调期间,其他事件处理可以清除#roleDrop
之外的原始项目。