2016-03-22 3 views
0

У меня проблема с сортировкой jQuery.UI Сортируемые перемещения прокрутки

Вот живой пример: 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; 
} 

В этом случае у меня есть DIV с свитком. Я прокручиваю до конца div, и я пытаюсь сортировать элемент, используя drag & drop. После этого действия прокрутка в div переходит к началу этого div. Как я могу «запомнить» позицию прокрутки и «вернуть» ее после сортировки?

+0

не в состоянии разобраться в этом – brk

+0

Он перемещает весь слой, а не только элементы. Вы уверены, что скрипка воспроизводит вашу проблему? Если да, пожалуйста, добавьте более подробную информацию или лучше объясните, что вам нужно, потому что это трудно понять. –

+0

На самом деле вам нужно добавить еще один внутренний div с прокруткой (с классом 'b') – teran

ответ

2

Вам нужно сохранить положение прокрутки, а затем повторно применить его при прекращении перемещения объекта.

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

Отличный совет, спасибо! –

0

Вы должны использовать метод sortable() на внутренней <div id="b"> и положить каждый элемент, который вы хотите сортировать внутри тега <div> поэтому они могут рассматриваться как элементы DOM. Вот рабочее решение JSFiddle Возможно, вы захотите проверить тему THIS.