1

DOM内でドラッグ可能な要素を移動しようとしていますが、replaceWith()またはremove()または同様の関数を実行しようとすると、そのドラッグ可能性が失われます。

DOM内で要素を移動するときに、要素のドラッグ可能性を失わないようにすることは可能ですか?

4

3 に答える 3

2

解決策は、jQueryを使用して要素を移動するのではなく、純粋なDOMを使用することです。

つまり、代わりに

$('#elem').remove().appendTo($('#elem2'))

行う

var q = $('#elem'); var el = q.get(0); el.parentNode.removeChild(el); $('#elem2').appendChild(el);

推奨されるかどうかはわかりませんが、機能します。

于 2009-08-29T12:58:47.810 に答える
0

DOM内を移動した後、ドラッグ可能な動作をもう一度作成してみませんか。

function xyz(){
    //move your stuff
    //create the draggable again

    $(element).draggable();
}
于 2009-08-28T16:45:06.130 に答える
0

いいえ、jqueryコアを変更しない限り、DOM内の要素を置き換え/削除するときにドラッグ可能性を維持することはできません(これはお勧めしません)。

DOM要素replaceWith()remove()実行すると、それらが破棄されるため、それらに関連付けられている動作やイベントも破棄されます。

ドラッグ可能な動作を含むアウターを作成してみてください<div>。代わりに、divドロップ時にドラッグ可能なアイテムを変更する場合などに、内のHTMLを置き換えてください。

または、(あまりエレガントではありませんが)実行draggable()後に要素を再度呼び出してreplaceWith()、で削除した動作を復元することもできますreplaceWith()

同様に、単に要素をしばらくの間非表示にremove()しようとする代わりに、それらの動作を保持します。hide()

つまり、問題に誤って取り組んでいます。アプローチを変更します。

于 2009-08-28T18:21:43.503 に答える