2016-03-22 13 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:私は、スクロールしてdiv要素を持っている。この場合

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

。私はdivの最後にスクロールし、ドラッグを使用して要素をソートしようとします&ドロップ。このアクションの後、div内のスクロールがこのdivの先頭にジャンプします。スクロールの位置を "覚え"て、ソート後に "元に戻す"ことができますか?

+0

ソートできません – brk

+0

要素だけでなく、すべてのレイヤーを移動します。フィドルがあなたの問題を再現していると確信していますか? 「はい」の場合は、表示しにくいため、詳細を追加したり、必要なものを説明したりしてください。 –

+0

実際にはスクロールボックス(クラス 'b'を持つ)でもう1つの内部divを追加する必要があります – 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

あなたは、内側<div id="b">sortable()メソッドを使用すると、あなたは彼らがDOM要素として扱うことができるよう<div>タグ内にソートしたいすべての要素を配置する必要があります。 ここに解決策がありますJSFiddle THISトピックをチェックしてください。

関連する問題