2009-08-28 72 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()简单地使元素消失一段时间,但保留其行为。

简而言之:您错误地接近了问题。改变你的方法。

相关问题