我试图在 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 中的元素时,不可能保留可拖动性,除非您修改 jquery 核心(我不建议这样做。)
Doing replaceWith()
and remove()
for DOM 元素意味着它们被销毁,因此与它们相关的任何行为或事件也被销毁。
<div>
尝试创建一个包含可拖动行为的外部,而不是div
在您想要在放置时更改可拖动项目时替换 HTML 等。
或者(不那么优雅)你可以draggable()
在你做之后再次调用你的元素replaceWith()
来恢复你删除的行为replaceWith()
。
同样,不要remove()
试图hide()
简单地让元素消失一段时间但保留它们的行为。
简而言之:您错误地解决了问题。改变你的方法。
在 DOM 中移动后,为什么不尝试再次创建可拖动行为:
function xyz(){
//move your stuff
//create the draggable again
$(element).draggable();
}