我試圖在DOM中移動可拖動的元素,但每當我嘗試使用replaceWith()或remove()或類似的函數時,其可拖動性都會丟失。JQuery在元素被移除時保留可拖動性
在DOM中移動元素時,是否可以使元素不會失去可拖動性?
我試圖在DOM中移動可拖動的元素,但每當我嘗試使用replaceWith()或remove()或類似的函數時,其可拖動性都會丟失。JQuery在元素被移除時保留可拖動性
在DOM中移動元素時,是否可以使元素不會失去可拖動性?
解決方案是不使用jQuery來移動元素,而是使用純DOM。
也就是說,而非
$('#elem').remove().appendTo($('#elem2'))
做
var q = $('#elem'); var el = q.get(0); el.parentNode.removeChild(el); $('#elem2').appendChild(el);
,如果它的建議,我不知道,但它的工作原理。
我知道這是一箇舊的答案,但如果你不介意我想知道爲什麼使用純DOM解決這個問題?順便說一句,你救了我的一天,非常感謝你:) – medBo 2016-01-04 23:03:34
你爲什麼不嘗試再次創建可拖動的行爲,你走動的DOM後:
function xyz(){
//move your stuff
//create the draggable again
$(element).draggable();
}
因爲由於我的架構如何,我不能 – erikkallen 2009-08-29 12:59:17
不,這不可能保持draggability當您更換/ DOM中刪除元素,除非你修改jquery核心(我不建議這樣做)。
爲DOM元素做replaceWith()
和remove()
意味着它們被銷燬,因此任何與它們相關的行爲或事件也會被銷燬。
嘗試創建一個外<div>
其中包含了可拖動的行爲,當你想在降改變拖動項目,而不是取代div
內的HTML等
或者(和更少的優雅),你可以再打電話draggable()
在您的元素上執行replaceWith()
以恢復您通過replaceWith()
刪除的行爲。
同樣,而不是remove()
嘗試hide()
簡單地使元素消失一段時間,但保留其行爲。
簡而言之:您錯誤地接近了問題。改變你的方法。
請顯示一些代碼 – TheVillageIdiot 2009-08-28 16:05:05