2

2 つの接続されたソータブルがあり、これらの間をドラッグするとうまくいきます。一度に複数をドラッグする必要があったため、次のように、選択した項目を event.item に追加して作業しました。

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

私が理解できない問題は、2 つのドロップ ゾーンのいずれかにカーソルを合わせていない場合、ドラッグしている要素内でプレースホルダーが終了することです。この時点で手を離すと消えます。

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 に答える