2009-11-04 12 views
10

私はリスト項目を$ .getで動的にページに追加してから、OL要素に追加します。これまでかなり普通でした。jQuery + Sortable + live

しかし、jQueryはこれらの新しい項目がページに読み込まれると認識していないため、それらを並べ替えることができません。

私はjQueryのライブでいくつかの臨床試験をしたが、どこにでもいることを聖霊降臨祭ませんでした...

答えて

16

.sortable()refresh方法は.sortable()機能を経由して追加されていないli年代を認識していないようです。

.sortable()初期化コードを文書準備済みのANDで呼び出す関数に追加し、liを動的に追加するコードでお試しください。

の代わりに:私はこの解決策を見つけたし、私のために正常に動作し

jQuery(document).ready(function() { 
    jQuery("#mySortableOL").doSort(); 
} 
... 
jQuery("#mySortableOL").append(...); 
doSort(); 
... 
function doSort(){ 
    jQuery("#mySortableOL").sortable({ 
     ... 
    }); 
} 
+1

それはLIだけではなく、基本的にすべてですが、アプローチは正しいし、働いています。 –

6

あなたは(「リフレッシュ」).sortableてみましたか? http://docs.jquery.com/UI/Sortable#method-refresh

+1

なぜこれが受け入れられた回答ではありませんか?これは、このAjaxの問題を管理する最もクリーンな方法です。 –

0

コード末尾には、.sortable({});が追加され、すべてのパラメータが再指定されます。おそらく関数や何かを使ってコードを複製せずにこれを行う方法がありますが、少なくともこれは機能します。

$('#List').live('click',function(e){ 

var myHTMLcode = '<li>New Item</li>' 

myHTMLcode.appendTo('#List').sortable({ 
items : 'li', 
axis : 'xy',  

update : function(event, ui){SPECIFIC Sortable FUNCTION CODE HERE}).fadeIn(); 
)}; 
-2

jQuery(document).ready(function() { 
    jQuery("#mySortableOL").sortable({ 
     ... 
    }); 
} 
... 
jQuery("#mySortableOL").append(...); 
jQuery("#mySortableOL").sortable("refresh"); 

のようなものを試してみてください。

makesortable = function(){ 
     $("#mylist").sortable({ 
      ... 
     }) 
     }; 
... 
// after list refresh : 
makesortable();