如何在jQuery中移动或交换元素?

dpp*_*dpp 17 html jquery

目标是在左兄弟之前或右兄弟之后移动一个元素.

<ul>
    <li>One</li>
    <li>Two</li>
    <li>Three</li>
    <li>One</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

仅给出元素的索引,我需要将其向左或向右移动.假设索引是1(LI用"Two"作为innerText),那么我想将它移到左边,输出应该是:

<ul>
    <li>Two</li>
    <li>One</li>
    <li>Three</li>
    <li>One</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

dpp*_*dpp 23

如果你需要一个元素被向左或向右移动,有jQuery方法一样next,并prev帮助你,你可以将一个和上一个元素insertAfterinsertBefore.

//Move right:
$(elementToBeMoved).insertAfter($(elementToBeMoved).next());

//Move left:
$(elementToBeMoved).insertBefore($(elementToBeMoved).prev());
Run Code Online (Sandbox Code Playgroud)


Mic*_*son 14

/**
 * @param siblings {jQuery} List of sibling elements to act upon
 * @param subjectIndex {int} Index of the item to be moved
 * @param objectIndex {int} Index of the item to move subject after
 */
var swapElements = function(siblings, subjectIndex, objectIndex) {
    // Get subject jQuery
    var subject = $(siblings.get(subjectIndex));
    // Get object element
    var object = siblings.get(objectIndex);
    // Insert subject after object
    subject.insertAfter(object);
}
$(function() {
    swapElements($('li'), 0, 1);
});
?
Run Code Online (Sandbox Code Playgroud)

工作示例:http://jsfiddle.net/faceleg/FJt9X/2/

  • 不完全是我需要的,但它回答了这个问题并帮助我提出了一个更好的主意! (2认同)