1

我有一个可排序且排序良好的元素列表。我还有一个位于可排序列表之外的可放置对象。当我在 droppable 上放置项目时,它旨在执行复制操作,这意味着在此操作期间排序是不可取的。

然而不幸的是,将 sortable 拖动到外部 droppable 会导致 sortable.update 触发。如果将可排序元素拖到给定元素之外,是否有办法忽略所有可排序的拖放事件?

我经历了所有相关的可排序事件,我似乎找不到任何对可排序元素的引用,以查看它们是否有共同的父母。

这是一个要演示的小提琴:http: //jsfiddle.net/6yhbG/

将任何一个可排序的 1/2 拖动到可放置的对象都会导致sortable.sort触发。

4

1 回答 1

4

好的,终于找到了它的底部:sortable('cancel')需要从中调用sortable.stop,我只是将一个类添加到可排序对象中,以便它知道是否要取消自己:

$('div').droppable({
    drop: function(e, ui) {
        ui.draggable.parent().addClass('dropped');
    }
});

$('ul').sortable({
    stop: function(){
        if ($(this).hasClass('dropped')){
            $(this).sortable('cancel');
            $(this).removeClass('dropped');
        }           
    }
});

在我的更新示例中:http: //jsfiddle.net/6yhbG/1/

于 2013-01-20T06:59:48.920 回答