2017-07-17 2 views
0

Ich habe eine sortierbare Liste mit einem Drop-Artikel im Inneren, was auch sortiert werden muss. Wenn Sie ein Element neben das Drop-Element ziehen, in dem der Platzhalter angezeigt wird, ist das Drop-Element weiterhin auf dem Platzhalter aktiv.Sortierbare Liste mit Drop-Artikel innerhalb des Hover-Platzhalter Ausgabe

Eine einfache Fiddle ist hier: JSFiddle

$("#item-list").sortable(); 

$(".container").droppable({ 
    accept: ".item", 
    drop: function (e, ui) { 
     var dropped = ui.draggable; 
     var droppedOn = $(this); 
     $(this).append(dropped.clone().removeAttr('style').removeClass("item").addClass("item-container")); 
     dropped.remove(); 
    } 
}); 

Gibt es bereits eine Lösung für dieses?

Antwort

0

wenn Sie nicht wollen, item container Klasse sortierbar Verwendung cancel

$("#item-list").sortable({ 
    cancel: ".item.container" 
}); 
+0

nein, es muss immer noch sortierbar sein –

0

Hier können Sie mit der Lösung http://jsfiddle.net/bRbyW/110/

$("#item-list").sortable(); 
 

 
$(".container").droppable({ 
 
    accept: ".item", 
 
    beforeStop: function(event, ui) { 
 
     $(this).html(); 
 
    }, 
 
    drop: function (e, ui) { 
 
     var dropped = ui.draggable; 
 
     var droppedOn = $(this); 
 
     if($(droppedOn)[0].innerHTML.indexOf('<div') < 0) 
 
\t   $(droppedOn)[0].innerHTML = ''; 
 
    $(this).append(dropped.clone().removeAttr('style').removeClass("item").addClass("item-container")); 
 
     
 
     dropped.remove(); 
 
    } 
 
});
.item { 
 
    width:200px; 
 
    height:30px; 
 
    border:1px dashed red; 
 
    margin:10px 0; 
 
    cursor:move; 
 
} 
 
.container { 
 
    height:150px; 
 
    border:1px dashed black; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script> 
 

 
<div id="item-list"> 
 
     <div class="item">1</div> 
 
     <div class="item">2</div> 
 
     <div class="item container">dropbox but still sortable</div> 
 
     <div class="item">3</div> 
 
     <div class="item">4</div> 
 
    </div>

+0

Danke Shiladitya, ich habe das Gefühl, du bist fast da, aber wenn ich nur um die Dropbox sortiere, werden sie immer noch fallengelassen –

0

Wow gehen zu sein, ich bin der Beantwortung meine eigene Frage!

Die Lösung wird, setzen Sie diese in Ihrer sortierbar Optionsliste:

refreshPositions: true 

Das funktioniert wie ein Charme!

Vielen Dank!