Jquery Sortable,通过拖出删除当前项

时间:2010-07-31 06:51:27

标签: javascript jquery jquery-ui-sortable

我的问题: 可排序事件输出:当我在列表中拖动某些内容或对列表进行排序时触发。 但我只想在拖出项目时启动该功能。

我的代码

        $(document).ready(function ust()
        {    
            $('#div1').sortable({
                out: function(event, ui) { $('#nfo').append('OUT<br />'); }
            });

        });

工作示例 http://jsfiddle.net/FrbW8/22/

4 个答案:

答案 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,直到你再次开始排序(至少在我的脚本中)。希望能帮助别人。