0

OK、ここで私がやろうとしているのは、新しい列がページにクローンを作成することによって動的に追加されたときにページに表示されるソート可能ファイルをjQueryUIに更新させることです。列(デモページ)のクローンを作成すると、新しい列は、既存の列リストからのアイテムと、上部のリストAから並べ替え可能なものの1つにドラッグできる新しいアイテムの両方を受け取ることができるはずです。これは初期設定では問題なく機能しますが、新しい列のクローンを作成して追加するとすぐに問題が発生します。新しく複製された列はドロップ可能なターゲットとして認識されず、リストAから新しく複製された列リストに新しいアイテムをドラッグすることもできません。

直感的には、sortable('refresh')コマンドは、セットアップ内の何かが変更されているかどうかをソート可能にチェックし、新しい要素がソート可能なアイテムを受信して​​処理できるようにするのに十分なはずです。しかし、ボタンをクリックしたときにこれをやろうとしていますが、効果がないようです。

また、「。columnlist」セレクターでsortable()プラグイン全体を再度率直に呼び出して、一致した新しい要素で初期化され、既に並べ替え可能な要素をスキップすることを期待しました。

ああ、もちろん、clone(true、true)を使用して、イベントとデータが確実に付随するようにします。

こちらのデモページをご覧ください:http://labs.shifthappens.nl/dragsort/ 次のことを試してください。

  1. リストAから列リストAまたはBにアイテムをドラッグします。並べ替え可能な作品へのドラッグ
  2. 列リストAのアイテムを並べ替えます。並べ替え可能です。
  3. クローンボタンをクリックします。列Cのクローンが表示されます。
  4. 任意のアイテム(リストAまたは別の列リストから)を複製された列Cにドラッグしてみてください。応答しません。まるで存在しないかのようです。
  5. おかしなことに、元の列Cにアイテムを既に配置してから複製した場合、複製された列にあるアイテムは他のリストに移動できますが、一度削除すると、複製されたリストに戻すことはできません。まるで自分の子孫を拒絶するかのように。

複製されたリストをソート可能で有効なドロップゾーンにする方法を教えてください。

4

1 に答える 1

0

jaredhoytが指摘したように、それは確かにディープクローニングに関するものでした。どうやらjqueryuiはディープクローン要素を必要とせず、実際にそれを実行し、新しい要素もドロップ可能なターゲットであると期待すると壊れます。

ただし、複製されたリストを認識するために、列に対して別の$('selector')。sortable()を実行する必要があることがわかりました。これは、jaredhoytが彼のフィドルでも行ったことです。これは私にとって直感的に「更新」方法が最も洗練された解決策になるでしょうが、そうではありませんか?

とにかく、ケースは閉じました。HTMLだけで、データとイベントを使用して列のクローンを作成するのと同じくらい簡単だったのはうれしいです。

于 2012-05-05T00:05:46.113 に答える