DOM内でドラッグ可能な要素を移動しようとしていますが、replaceWith()またはremove()または同様の関数を実行しようとすると、そのドラッグ可能性が失われます。
DOM内で要素を移動するときに、要素のドラッグ可能性を失わないようにすることは可能ですか?
解決策は、jQueryを使用して要素を移動するのではなく、純粋なDOMを使用することです。
つまり、代わりに
$('#elem').remove().appendTo($('#elem2'))
行う
var q = $('#elem'); var el = q.get(0); el.parentNode.removeChild(el); $('#elem2').appendChild(el);
推奨されるかどうかはわかりませんが、機能します。
DOM内を移動した後、ドラッグ可能な動作をもう一度作成してみませんか。
function xyz(){
//move your stuff
//create the draggable again
$(element).draggable();
}
いいえ、jqueryコアを変更しない限り、DOM内の要素を置き換え/削除するときにドラッグ可能性を維持することはできません(これはお勧めしません)。
DOM要素replaceWith()
をremove()
実行すると、それらが破棄されるため、それらに関連付けられている動作やイベントも破棄されます。
ドラッグ可能な動作を含むアウターを作成してみてください<div>
。代わりに、div
ドロップ時にドラッグ可能なアイテムを変更する場合などに、内のHTMLを置き換えてください。
または、(あまりエレガントではありませんが)実行draggable()
後に要素を再度呼び出してreplaceWith()
、で削除した動作を復元することもできますreplaceWith()
。
同様に、単に要素をしばらくの間非表示にremove()
しようとする代わりに、それらの動作を保持します。hide()
つまり、問題に誤って取り組んでいます。アプローチを変更します。