我试图在DOM中移动一个可拖动的元素,但是每当我尝试replaceWith()或remove()或类似的函数时,它的可拖放性就会丢失。
有没有可能使元素在DOM中移动时不会失去可拖放性?
发布于 2009-08-29 12:58:48
解决方案是不使用jQuery来移动元素,而是使用纯DOM。
也就是说,它不是
$('#elem').remove().appendTo($('#elem2'))
做
var q = $('#elem'); var el = q.get(0); el.parentNode.removeChild(el); $('#elem2').appendChild(el);
我不知道它是否被推荐,但它是有效的。
发布于 2009-08-28 16:45:06
在移动DOM之后,为什么不尝试再次创建可拖动行为:
function xyz(){
//move your stuff
//create the draggable again
$(element).draggable();
}
发布于 2009-08-28 18:21:44
不,当您替换/删除DOM中的元素时,不可能保持可拖放性,除非您修改了jquery核心(我不推荐这样做)。
对DOM元素执行replaceWith()
和remove()
意味着它们会被销毁,因此与它们相关的任何行为或事件也会被销毁。
尝试创建一个包含可拖动行为的外部<div>
,当您想要在拖放时更改可拖动项时,替换div
中的HTML,等等。
或者(不那么优雅),您可以在执行replaceWith()
之后对元素再次调用draggable()
,以恢复使用replaceWith()
移除的行为。
同样,不使用remove()
,而是尝试使用hide()
简单地让元素消失一段时间,但保留它们的行为。
简而言之:你正在错误地处理这个问题。改变你的方法。
https://stackoverflow.com/questions/1347924
复制相似问题