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 中的元素时,不可能保留可拖动性,除非您修改 jquery 核心(我不建议这样做。)

Doing replaceWith()and remove()for DOM 元素意味着它们被销毁,因此与它们相关的任何行为或事件也被销毁。

<div>尝试创建一个包含可拖动行为的外部,而不是div在您想要在放置时更改可拖动项目时替换 HTML 等。

或者(不那么优雅)你可以draggable()在你做之后再次调用你的元素replaceWith()来恢复你删除的行为replaceWith()

同样,不要remove()试图hide()简单地让元素消失一段时间但保留它们的行为。

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

于 2009-08-28T18:21:43.503 回答
0

在 DOM 中移动后,为什么不尝试再次创建可拖动行为:

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

    $(element).draggable();
}
于 2009-08-28T16:45:06.130 回答