假设我在变量 nodeA 和 nodeB 中有两个节点引用。我想在 DOM 中相互替换它们,保留它们的所有属性和附加的事件处理程序等。
我怎样才能用 jQuery 做到这一点?我试过 .replaceWith(...) 但我看到它适用于 html 文本,我想保留 DOM 对象本身。
将有两个 .replaceWith(...) 调用。第二个是在一个节点上,它不在 DOM 中......它似乎不起作用......
提前致谢
假设我在变量 nodeA 和 nodeB 中有两个节点引用。我想在 DOM 中相互替换它们,保留它们的所有属性和附加的事件处理程序等。
我怎样才能用 jQuery 做到这一点?我试过 .replaceWith(...) 但我看到它适用于 html 文本,我想保留 DOM 对象本身。
将有两个 .replaceWith(...) 调用。第二个是在一个节点上,它不在 DOM 中......它似乎不起作用......
提前致谢
它将类似于开关变量,但您需要根据 DOM 来考虑它。
var temp = $('<div>');
temp.insertAfter(first);
first.insertAfter(second);
second.insertAfter(temp);
temp.remove();
JS 小提琴:http: //jsfiddle.net/qsutQ/
使用此答案中的函数:
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/
(点击文本查看警告框,事件绑定保持)