如何在不影响相关javascript的情况下在DOM树周围移动元素?

时间:2009-12-06 03:54:54

标签: javascript dom mootools

在这种情况下,我有一个包含iFrame的编辑器,mooEditable。我使用ID克隆元素,销毁旧元素并在需要时插入新元素。

Javascript组件在此阶段不再起作用。如果有一种通用的方法可以做到这一点,那么如果你分享它就会非常棒。

TIA

3 个答案:

答案 0 :(得分:3)

我认为在mootools中移动项目的正确方法是:

$("newparent").adopt($("movingThis"));

否则,任何事件等都可能无效。如果你必须保存/重新应用它们,你也可以使用cloneEvents(),但不一定要这样做。此外,这是保证元素和其他javascript之间保持所有关系的唯一方法,同时保留您可能拥有的任何元素存储。

的问候, 结尾

答案 1 :(得分:2)

也许你可以展示你做什么的要点?具体来说,“摧毁旧的”是什么意思?

这使用jQuery,但如果你愿意,可以编写裸机代码:

var item = $('#item-id');  // item to move
var want = $('#new-div');  // container to receive it
item.remove();
want.append(item);

您可能无法移动 iframe (不确定)。如果是这样,如果您只是交换两个项目,请移动另一个项目。

答案 2 :(得分:2)

您正在丢失与元素相关的事件和行为。如果您还没有,请尝试使用.clone method。阅读它的文档,并了解cloneEvents()函数和keepid参数。

var myOrigEditor = $('myEditor');

//clone the element and its events
var myClonedEditor = myOrigEditor.clone(true, true).cloneEvents(myOrigEditor); 

// We're copying IDs as well, so remove the old one from the DOM first to
// remove any possibility of confusion.
myOrigEditor.remove();

// Put the cloned object where you want.
$('location').append(myClonedEditor);