2012-06-19 18 views
6

¿Hay una manera simple de mover un elemento dentro de su propio elemento primario?jQuery mueve el elemento DOM dentro del elemento primario

Así ...

de:

<div class="test">hello 1</div> 
<div class="test">hello 2</div> 
<div class="test">hello 3</div> 

a:

<div class="test">hello 1</div> 
<div class="test">hello 3</div> 
<div class="test">hello 2</div> 

Cualquiera de mover un div arriba o hacia abajo un paso, o utilizando el índice de appendTo en una específica posición.

+0

¿Cuáles son las características de la dos elementos? ¿Cómo se selecciona el elemento para mover y dónde se necesita moverlo? –

+0

Lo selecciono con un controlador de clic. Luego uso el índice del elemento cliqueado. – user1121487

+0

Bien, ¿a dónde debería ir el elemento cliqueado? ¿Debería moverse después del último elemento de la lista? ¿Cómo se determina la nueva posición? –

Respuesta

12

Usted debe ser capaz de utilizar .prev() y .next() como esto (en este caso en función de jQuery):

$.fn.moveUp = function() { 
    $.each(this, function() { 
     $(this).after($(this).prev()); 
    }); 
}; 
$.fn.moveDown = function() { 
    $.each(this, function() { 
     $(this).before($(this).next()); 
    }); 
}; 
$("div:eq(2)").moveUp(); //Would move hello 3 up 
$("div:eq(0)").moveDown(); //Would move hello 1 down 

JSFiddle Demo

+0

funciona muy bien, gracias! – user1121487

3

Trate

$("div:eq(2)").after($("div:eq(0)")); 

o

$("div:eq(2)").before($("div:eq(1)")) 

Recordando que: eq() es cero basado.

+0

¿No podría simplemente hacer '$ (" div: eq (2) ") después ($ (" div: eq (3) "))' o no funcionaría? – h2ooooooo

+0

¡Gracias! Actualizado mi respuesta ... – 472084

+0

¡Gracias, funciona genial! – user1121487

2
var child = $('#parent div'); // keep reference for further use 
child.eq(2).insertBefore(child.eq(1)); 

DEMO

+0

funciona muy bien también gracias! – user1121487

Cuestiones relacionadas