2011-07-17 9 views
10

jQueryソート可能な要素をどのように追跡できるかを把握しようとしています。 私のソート可能な要素には4つの要素(divs)があり、それぞれ固有のidがあるとします。 #100、#200、#300、#400と呼ぶことにしましょう。しかし、#100を移動してスポット番号3を言うと、このIDの新しい位置を保存する必要がありますが、他の位置も更新された位置の値を取得する必要があります。jQueryソート可能なすべての要素の位置を把握する

意味がありますか?基本的には、各固有IDの位置を取得したいので、後で使用できるようにリストの順序を保存することができます。

私はちょうど..

ポイント私の右方向に移動したもののために、ソート可能なすべての要素のレポート何かを見つけることができませんでしたか? ありがとう

答えて

25

あなたに提供されたストップイベントをソート可能に使用して、アイテムを追跡することができます。これは小さな例です。

(function($) { 
    $('#sortable').sortable({ 
     stop: function(e, ui) { 
      console.log($.map($(this).find('li'), function(el) { 
       return el.id + ' = ' + $(el).index(); 
      })); 
     } 
    }); 
})(jQuery); 

これは、IDと現在のインデックスでソート可能なすべてのアイテムの配列を記録します。ここで

は、同様にjsfiddleの実施例である:http://jsfiddle.net/beyondsanity/HgDZ9/

+0

問題ありません! 「el」の代わりに「this」を使用し、$(el).attr( 'id')の代わりにthis.idを使用して小さな改善が編集されました。 。フィドルは古い例と同じなので、2つを比較することができます:) –

+0

更新されたコードを試してみましたが、うまくいきません。何か案は? http://jsfiddle.net/LxMhF/2/ – INT

+0

私はちょっと混乱しているようですが、 "el"が必要です。$ .mapの中の "this"は現在の要素ではなく "ウィンドウ"オブジェクトです。 "this"は、$ .fn.map($(selector).map(fn))の現在の要素です。それを明確にするためです。 –

0

可能な複製jQuery UI Sortable Position。何がカウント(index()開始を移動されていない場合は基本的に

、ソート可能な(あるいは単なる古い親elemen)内の要素の位置を取得するには、ちょうど

$('#300').index(); 

ような何かこのコードは2を返します。ゼロで)、要素が再配置されたときに更新されます。

デモ:http://jsfiddle.net/XB5Dh/です。要素をクリックするとその位置が表示され、要素をドラッグすると新しい位置が表示されます。

2

ドキュメントhttp://api.jqueryui.com/sortable/#method-toArrayによると、私はあなたが組み込みメソッドtoArrayを使用することをお勧めします。 例:

$(document).ready(function() { 
    $('#sortable').sortable({ 
     stop: function(e, ui) { 
     console.log($('#sortable').sortable('toArray')); 
     } 
    }); 
    $('#sortable').disableSelection(); 
    }); 
+0

これは私が必要なものです、ありがとうございます。 –

関連する問題