2

我有两个连接的可排序,在这些工作之间拖动很好。我需要一次拖动多个,所以我使用以下类似的方法来完成它,将选定的项目附加到 event.item。

$(this).sortable({
         connectWith: ".stage-content",
         placeholder: 'placeholder',
         start: function(ui, e) {
             e.item.siblings(".selected").appendTo(e.item);
....

我无法弄清楚的问题是,当没有将鼠标悬停在两个放置区域之一上时,占位符最终会出现在我拖动的元素中。如果你在这个时候放手,它们就会消失。

HierarchyRequestError:无法在层次结构中的指定点插入节点

这很有意义,但我不知道解决方案是什么,感谢任何帮助!

http://jsfiddle.net/mstefanko/kxBUG/

4

2 回答 2

1

底部是带有示例的 jsfiddle。希望这可以帮助。

$(document).ready(function(){
                 $(".droppable").droppable({
                    drop: function(event, ui) {
                        var $list = $(this);
                        $helper = ui.helper;
                        $($helper).removeClass("selected");
                        var $selected = $(".selected");                 
                        if($selected.length > 1){                       
                            moveSelected($list,$selected);
                        }else{
                            moveItem(ui.draggable,$list);
                        }                                       
                    }, tolerance: "touch"
                 });

                 $(".draggable").draggable({
                    revert: "invalid",
                    helper: "clone",
                    cursor: "move",
                    drag: function(event,ui){
                        var $helper = ui.helper;
                        $($helper).removeClass("selected");
                        var $selected = $(".selected"); 
                        if($selected.length > 1){   
                            $($helper).html($selected.length + " items");
                        }                                       
                    }
                 });

                function moveSelected($list,$selected){
                    $($selected).each(function(){
                        $(this).fadeOut(function(){
                            $(this).appendTo($list).removeClass("selected").fadeIn();
                        });                 
                    });             
                }

                function moveItem( $item,$list ) {
                    $item.fadeOut(function() {
                        $item.find(".item").remove();
                        $item.appendTo( $list ).fadeIn();
                    });
                }

                $(".item").click(function(){
                    $(this).toggleClass("selected");
                });

            });

http://jsfiddle.net/caferdo/k5XJv/3/

于 2013-02-21T17:43:42.227 回答
0

您应该添加$(YOUR SORTABLE OBJECT).sortable( "refresh" )启动功能。

$(this).sortable({
         connectWith: ".stage-content",
         placeholder: 'placeholder',
         start: function(ui, e) {
             e.item.siblings(".selected").appendTo(e.item);
             $(YOUR SORTABLE OBJECT).sortable( "refresh" );}
...
于 2013-05-21T11:39:16.453 回答