我可以使用 jQuery 轻松交换两个元素吗?
如果可能的话,我希望用一条线来做到这一点。
我有一个选择元素,我有两个按钮可以向上或向下移动选项,而且我已经有了选定的和目标选择器,我用 if 来做,但我想知道是否有更简单的方法。
原文由 juan 发布,翻译遵循 CC BY-SA 4.0 许可协议
我可以使用 jQuery 轻松交换两个元素吗?
如果可能的话,我希望用一条线来做到这一点。
我有一个选择元素,我有两个按钮可以向上或向下移动选项,而且我已经有了选定的和目标选择器,我用 if 来做,但我想知道是否有更简单的方法。
原文由 juan 发布,翻译遵循 CC BY-SA 4.0 许可协议
Paulo 是对的,但我不确定他为什么要克隆相关元素。这并不是真正必要的,并且会丢失与元素及其后代关联的任何引用或事件侦听器。
这是一个使用纯 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);
}
原文由 bobince 发布,翻译遵循 CC BY-SA 3.0 许可协议
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
这是一种仅使用 jQuery 来解决此问题的有趣方法(如果 2 个元素 彼此相邻):
或者