我试图在DOM中移动可拖动的元素,但每当我尝试使用replaceWith()或remove()或类似的函数时,其可拖动性都会丢失。JQuery在元素被移除时保留可拖动性
在DOM中移动元素时,是否可以使元素不会失去可拖动性?
我试图在DOM中移动可拖动的元素,但每当我尝试使用replaceWith()或remove()或类似的函数时,其可拖动性都会丢失。JQuery在元素被移除时保留可拖动性
在DOM中移动元素时,是否可以使元素不会失去可拖动性?
解决方案是不使用jQuery来移动元素,而是使用纯DOM。
也就是说,而非
$('#elem').remove().appendTo($('#elem2'))
做
var q = $('#elem'); var el = q.get(0); el.parentNode.removeChild(el); $('#elem2').appendChild(el);
,如果它的建议,我不知道,但它的工作原理。
我知道这是一个旧的答案,但如果你不介意我想知道为什么使用纯DOM解决这个问题?顺便说一句,你救了我的一天,非常感谢你:) – medBo 2016-01-04 23:03:34
你为什么不尝试再次创建可拖动的行为,你走动的DOM后:
function xyz(){
//move your stuff
//create the draggable again
$(element).draggable();
}
因为由于我的架构如何,我不能 – erikkallen 2009-08-29 12:59:17
不,这不可能保持draggability当您更换/ DOM中删除元素,除非你修改jquery核心(我不建议这样做)。
为DOM元素做replaceWith()
和remove()
意味着它们被销毁,因此任何与它们相关的行为或事件也会被销毁。
尝试创建一个外<div>
其中包含了可拖动的行为,当你想在降改变拖动项目,而不是取代div
内的HTML等
或者(和更少的优雅),你可以再打电话draggable()
在您的元素上执行replaceWith()
以恢复您通过replaceWith()
删除的行为。
同样,而不是remove()
尝试hide()
简单地使元素消失一段时间,但保留其行为。
简而言之:您错误地接近了问题。改变你的方法。
请显示一些代码 – TheVillageIdiot 2009-08-28 16:05:05