首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JQuery在删除元素时保留可拖放性

JQuery在删除元素时保留可拖放性
EN

Stack Overflow用户
提问于 2009-08-28 15:57:25
回答 3查看 251关注 0票数 1

我试图在DOM中移动一个可拖动的元素,但是每当我尝试replaceWith()或remove()或类似的函数时,它的可拖放性就会丢失。

有没有可能使元素在DOM中移动时不会失去可拖放性?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-08-29 12:58:48

解决方案是不使用jQuery来移动元素,而是使用纯DOM。

也就是说,它不是

代码语言:javascript
运行
复制
$('#elem').remove().appendTo($('#elem2'))

代码语言:javascript
运行
复制
var q = $('#elem'); var el = q.get(0); el.parentNode.removeChild(el); $('#elem2').appendChild(el);

我不知道它是否被推荐,但它是有效的。

票数 2
EN

Stack Overflow用户

发布于 2009-08-28 16:45:06

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

代码语言:javascript
运行
复制
function xyz(){
    //move your stuff
    //create the draggable again

    $(element).draggable();
}
票数 0
EN

Stack Overflow用户

发布于 2009-08-28 18:21:44

不,当您替换/删除DOM中的元素时,不可能保持可拖放性,除非您修改了jquery核心(我不推荐这样做)。

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

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

或者(不那么优雅),您可以在执行replaceWith()之后对元素再次调用draggable(),以恢复使用replaceWith()移除的行为。

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

简而言之:你正在错误地处理这个问题。改变你的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1347924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档