2012-06-19 21 views
6

C'è un modo semplice per spostare un elemento all'interno del proprio genitore?jQuery move Elemento DOM all'interno del genitore

... Ti piace questa

da:

<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> 

O spostare un UP o DOWN div un passo, o utilizzando l'indice per appendTo in una specifica posizione.

+0

Quali sono le caratteristiche del due elementi? Come si seleziona l'elemento da spostare e dove è necessario spostarlo? –

+0

Lo seleziono con un gestore di clic. Quindi uso l'indice dell'elemento cliccato. – user1121487

+0

Ok, allora dove dovrebbe andare l'elemento cliccato? Dovrebbe essere spostato dopo l'ultimo elemento nell'elenco? Come si determina la nuova posizione? –

risposta

12

Si dovrebbe essere in grado di utilizzare .prev() e .next() come questo (qui in funzione 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

funziona alla grande, grazie! – user1121487

3

Prova

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

o

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

Ricordando che: eq() è zero based.

+0

Non potresti semplicemente fare '$ (" div: eq (2) "). After ($ (" div: eq (3) "))' o non funzionerebbe? – h2ooooooo

+0

Grazie! Aggiornato la mia risposta ... – 472084

+0

Grazie, funziona alla grande! – user1121487

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

DEMO

+0

funziona alla grande anche grazie! – user1121487

Problemi correlati