scriptaculous を使用し、問題が発生している古いプロジェクトに取り組んでいます。現在、次のようなツリー構造があります。
Item 1
+ Item 1a
+ Item 1aa
+ Item 1ab
+ Item 1b
Item 2
+ Item 2a
+ Item 2b
+ Item 2ba
+ Item 2bb
ツリー オプションを使用して並べ替えを設定した方法で、ユーザーはアイテム 2bbをアイテム 2aにドラッグすることができますが、これを防止しようとしています。ドラッグしたアイテムを親カテゴリ内に保持したいと思います。したがって、アイテム 2baがアイテム 2bの下に存在する場合、ユーザーはアイテムをその親の外にドラッグできません。私が使用している作成コードは非常に単純です。
Sortable.create('cats', {tree:true,scroll:window,treeTag:'ul',tag:'li', onChange:function(){$('save-cats').style.visibility='visible';}});
構造は標準<li>
タグで構成されています (ネストされた<ul>
タグに注意してください:
<ul>
<li>Item 1</li>
<li>
Item 2
<ul>
<li>Item 2a</li>
</ul>
</li>
</ul>
これはscriptaculousでも可能ですか、それとも別のものにアップグレードする必要がありますか?
これが動的リストであることを忘れていました。封じ込めオプションが探しているものかどうかはわかりませんが、一意の ID を持っていないため、可能ではないようです。
アップデート
これが役立つ場合、私は次のコードをいじっています:
new Draggable('cats',{revert:true});
Droppables.add('cats', {
onDrop: function(element)
{
return false;
}});
cat はメインの ul 要素の ID です。onDrop が発火していますが、元に戻すことも、アイテムを「受け入れない」こともできません。それができれば、現在の親と新しい親を比較し、同じでない場合は要素を押し戻すことができると想定しています。