我的问题: 可排序事件输出:当我在列表中拖动某些内容或对列表进行排序时触发。 但我只想在拖出项目时启动该功能。
我的代码
$(document).ready(function ust()
{
$('#div1').sortable({
out: function(event, ui) { $('#nfo').append('OUT<br />'); }
});
});
答案 0 :(得分:35)
使用beforeStop截取项目并将其删除:
receive: function(e, ui) { sortableIn = 1; },
over: function(e, ui) { sortableIn = 1; },
out: function(e, ui) { sortableIn = 0; },
beforeStop: function(e, ui) {
if (sortableIn == 0) {
ui.item.remove();
}
}
(我最初是在谷歌发现的,但是再也找不到链接了。所以,我为没有引用来源道歉。)
答案 1 :(得分:4)
这是out回调的默认行为。见jquery ui trac ticket
我真的不同意'逻辑'行为概念。
“但是,请注意”退出“回调 拖动时仍会触发 进入列表然后释放鼠标 (但如果你没有在名单上,则不是这样)。 这是逻辑行为并且发生了 对于正常的可排序。“
答案 2 :(得分:3)
其他解决方案似乎不适用于已连接的可排序列表,因此我发布了自己的解决方案,该解决方案适用于我的案例。这样就可以使用“droppable”插件捕获“drop”事件,当元素被删除到可排序列表之外时。
$('#div1').sortable({
....
}).droppable({greedy: true})
$('body').droppable({
drop: function ( event, ui ) {
ui.draggable.remove();
}
});
以下是这种方法的实践:http://jsfiddle.net/n3pjL/
答案 3 :(得分:1)
我使用this.element.find('.ui-sortable-helper').length
来区分&#34;整理事件&#34;并且&#34;退出事件&#34;。在排序时,已排序的项目具有类ui-sortable-helper。在删除之后,没有其他ui-sortable-class,直到你再次开始排序(至少在我的脚本中)。希望能帮助别人。