是否有用于切换元素的本机 jQuery 函数?

新手上路,请多包涵

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

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

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

原文由 juan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 282
2 个回答

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

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

或者

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

原文由 lotif 发布,翻译遵循 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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题