2009-08-28 63 views

回答

2

解決方案是不使用jQuery來移動元素,而是使用純DOM。

也就是說,而非

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

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

,如果它的建議,我不知道,但它的工作原理。

+0

我知道這是一箇舊的答案,但如果你不介意我想知道爲什麼使用純DOM解決這個問題?順便說一句,你救了我的一天,非常感謝你:) – medBo 2016-01-04 23:03:34

0

你爲什麼不嘗試再次創建可拖動的行爲,你走動的DOM後:

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

    $(element).draggable(); 
} 
+0

因爲由於我的架構如何,我不能 – erikkallen 2009-08-29 12:59:17

0

不,這不可能保持draggability當您更換/ DOM中刪除元素,除非你修改jquery核心(我不建議這樣做)。

爲DOM元素做replaceWith()remove()意味着它們被銷燬,因此任何與它們相關的行爲或事件也會被銷燬。

嘗試創建一個外<div>其中包含了可拖動的行爲,當你想在降改變拖動項目,而不是取代div內的HTML等

或者(和更少的優雅),你可以再打電話draggable()在您的元素上執行replaceWith()以恢復您通過replaceWith()刪除的行爲。

同樣,而不是remove()嘗試hide()簡單地使元素消失一段時間,但保留其行爲。

簡而言之:您錯誤地接近了問題。改變你的方法。

相關問題