私はjQueryを初めて使用し、jQueryUIの使用に完全に苦労していsortable
ます。
アイテムのグループ化と順序付けを容易にするために、ページをまとめようとしています。
私のページにはグループのリストがあり、各グループにはアイテムのリストが含まれています。ユーザーが次のことができるようにしたいと思います。
- グループを並べ替える
- グループ内のアイテムを並べ替える
- グループ間でアイテムを移動する
最初の2つの要件は問題ありません。私はそれらをうまく分類することができます。問題は3番目の要件にあります。それらのリストを相互に接続することはできません。いくつかのコードが役立つかもしれません。これがマークアップです。
<ul id="groupsList" class="groupsList">
<li id="group1" class="group">Group 1
<ul id="groupItems1" class="itemsList">
<li id="item1-1" class="item">Item 1.1</li>
<li id="item1-2" class="item">Item 1.2</li>
</ul>
</li>
<li id="group2" class="group">Group 2
<ul id="groupItems2" class="itemsList">
<li id="item2-1" class="item">Item 2.1</li>
<li id="item2-2" class="item">Item 2.2</li>
</ul>
</li>
<li id="group3" class="group">Group 3
<ul id="groupItems3" class="itemsList">
<li id="item3-1" class="item">Item 3.1</li>
<li id="item3-2" class="item">Item 3.2</li>
</ul>
</li>
</ul>
$('#groupsList').sortable({});
とを入れることでリストを並べ替えることができ$('.itemsList').sortable({});
ましたdocument ready function
。connectWith
オプションを使っsortable
て動作させてみましたが、見事に失敗しました。私がやりたいのは、すべてのgroupItemsX
リストをすべてのリストに接続するgroupItemsX
ことです。どうすればいいですか?
ある種の循環参照がない限り、リストをそれ自体に具体的に接続しないようにする必要があると考えていました。確かに、私はExcelを使用していませんが、スタックオーバーフローなどを引き起こす、ある種の終わりのない再帰を引き起こす可能性があるように見えました。うーん。駄洒落でごめんなさい。自分を助けることができませんでした。
とにかく、私はこのようなことをしようとしていましたが、うまくいきませんでした:
$('.groupsList').sortable(); // worked great
$('.groupsList').each( function () {
$(this).sortable( {
connectWith: ['.groupsList':not('#'+ $(this).attr('id') )];
});
});
私はそこで構文を完全に壊したと確信しています、そしてそれが私が最初に質問をしなければならなかった理由だと思います。リストから現在のアイテムを除外することは、パフォーマンスの観点からも必要または有用ですか?
AdamとJimmyPによって提供された両方の回答はIEで機能しました(FireFoxでは実際に奇妙な動作をしますが、並べ替えようとするとリスト項目が上書きされます)。私はあなたの答えの1つを受け入れ、もう1つに投票しますが、フィルタリングに関するアイデア/提案があれば、それを聞きたいと思います。