是否有本机jQuery函数来切换元素?

2022-08-30 01:43:09

我可以轻松地用jQuery交换两个元素吗?

如果可能的话,我希望用一行来做到这一点。

我有一个选择元素,我有两个按钮可以上下移动选项,并且我已经有选择和目标选择器,我用if来做,但我想知道是否有更简单的方法。


答案 1

这是一种仅使用jQuery解决此问题的有趣方法(如果2个元素彼此相邻):

$("#element1").before($("#element2"));

$("#element1").after($("#element2"));

答案 2

保罗是对的,但我不确定他为什么要克隆有关元素。这并不是必需的,并且会丢失与元素及其后代关联的任何引用或事件侦听器。

这是一个使用纯DOM方法的非克隆版本(因为jQuery实际上没有任何特殊功能来简化此特定操作):

function swapNodes(a, b) {
    var aparent = a.parentNode;
    var asibling = a.nextSibling === b ? a : a.nextSibling;
    b.parentNode.insertBefore(a, b);
    aparent.insertBefore(b, asibling);
}