1

假设我在变量 nodeA 和 nodeB 中有两个节点引用。我想在 DOM 中相互替换它们,保留它们的所有属性和附加的事件处理程序等。

我怎样才能用 jQuery 做到这一点?我试过 .replaceWith(...) 但我看到它适用于 html 文本,我想保留 DOM 对象本身。

将有两个 .replaceWith(...) 调用。第二个是在一个节点上,它不在 DOM 中......它似乎不起作用......

提前致谢

4

2 回答 2

1

它将类似于开关变量,但您需要根据 DOM 来考虑它。

var temp = $('<div>'); 
temp.insertAfter(first);
first.insertAfter(second);
second.insertAfter(temp);
temp.remove();

JS 小提琴:http: //jsfiddle.net/qsutQ/

于 2013-04-18T09:04:48.050 回答
1

使用此答案中的函数:

jquery:在 DOM 中切换元素

function swapElements(elm1, elm2) {
    var parent1, next1,
        parent2, next2;

    parent1 = elm1.parentNode;
    next1   = elm1.nextSibling;
    parent2 = elm2.parentNode;
    next2   = elm2.nextSibling;

    parent1.insertBefore(elm2, next1);
    parent2.insertBefore(elm1, next2);
}

切换应该非常简单,不需要创建任何临时元素:

swapElements($("#obj1")[0], $("#obj2")[0]);

小提琴: http:
//jsfiddle.net/JvAMq/1/
(点击文本查看警告框,事件绑定保持)

于 2013-04-18T09:07:17.203 回答