2016-03-22 9 views
0

Ich habe ein Problem mit jQuery sortierbar. HierUI Sortable verschiebt Scroll

ist anschauliches Beispiel: JSFiddle

HTML:

<div class="a"> 
    <div class="b"> 
    a<br> 
    b<br> 
    c<br> 
    d<br> 
    e<br> 
    f<br> 
    g<br> 
    h<br> 
    i<br> 
    j<br> 
    k<br> 
    l<br> 
    m<br> 
    n<br> 
    o<br> 
    </div> 
</div> 

JS:

$(function(){ 
    $('.a').sortable(); 
}); 

CSS:

.b { 
    border: 1px solid; 
    width: 100px; 
    height: 100px; 
    overflow-y: scroll; 
    overflow-x: hidden; 
    text-align: center; 
} 

In diesem Fall habe ich div mit Scroll. Ich scrolle bis zum Ende der div und ich versuche, Element mit Drag & Drop zu sortieren. Nach dieser Aktion springt scroll in div zum Anfang dieses div. Wie kann ich die Position von scroll "merken" und nach Sortierung "zurücksetzen"?

+0

nicht in der Lage, es zu sortieren – brk

+0

Es bewegt sich alle Ebene, nicht nur die Elemente. Bist du sicher, dass die Geige dein Problem reproduziert? Wenn ja, fügen Sie bitte weitere Details hinzu oder erklären Sie besser, was Sie brauchen, denn es ist schwer zu sehen. –

+0

eigentlich müssen Sie eine weitere innere div mit scrollbox hinzufügen (mit Klasse 'b') – teran

Antwort

2

Sie müssen die Bildlaufposition speichern und dann erneut anwenden, wenn Sie das Objekt nicht mehr bewegen.

JSFIDDLE: JSFIDDLE

$(function(){ 
    var scrollTop = 0; 
    $('.a').sortable({ 
     start: function(event, ui){ 
      scrollTop = ui.item.scrollTop(); 
     }, 
     stop: function(event, ui){ 
      ui.item.scrollTop(scrollTop); 
     } 
    }); 
}); 
+0

Toller Tipp, danke! –

0

sollten Sie verwenden die sortable() Methode auf der inneren <div id="b"> und setzen jedes Element, das Sie in einem <div> Tag sortiert werden sollen, so können sie als DOM-Elemente behandelt werden. Hier ist eine funktionierende Lösung JSFiddle Sie möchten vielleicht THIS Thema überprüfen.

Verwandte Themen