2010-12-13 17 views
37

Moja struktura HTML jest tak:Jak przenieść element HTML w jQuery?

<div id="parent"> 
    <div id="1">Some content</div> 
    <div id="2">Some content</div> 
</div> 

Chcę przenieść element id="2" umieścić przed id="1" więc jej będzie tak:

<div id="parent"> 
    <div id="2">Some content</div> 
    <div id="1">Some content</div> 
</div> 

Jak mogę zrobić coś podobnego w jQuery ?

+1

@rahul - są nieprawidłową * w HTML4 *, być jasne, że biorąc pod uwagę zmiany lately;) –

+2

@rahul: Identyfikator jest po prostu tylko na przykład :), prawdziwa oczywiście nie skrypt. – GusDeCooL

Odpowiedz

66

Można użyć .insertBefore() coś takiego:

$("#2").insertBefore("#1"); 

Albo .prependTo(), tak:

$("#2").prependTo("#parent"); 

... albo na odwrót za pomocą #1 i .insertAfter() i .appendTo() ... lub kilka inne sposoby w rzeczywistości, to po prostu zależy od tego, po co faktycznie jesteś, powyższe 2 metody powinny być możliwie najkrótsze, z 2 identyfikatorami.

Jestem przy założeniu, że to tylko przykład, pamiętaj, aby używać identyfikatorów, które nie zaczynają się od liczby na prawdziwej stronie HTML4, są nieprawidłowe i powodują kilka problemów.

+0

dziękuję za zrozumienie, jeśli ID tylko na przykład, a także swój kod '$ (" # 2 "). InsertBefore (" # 1 ");' czyści mój problem ... dziękuję bardzo :) – GusDeCooL

7

Wystarczy zrobić:

$('#1').before($('#2')); 
+1

dlaczego '$ ('# 2')' zamiast tylko ''# 2''? –

+1

@FranciscoCorralesMorales Ponieważ metoda ['before'] (http://api.jquery.com/before/) oczekuje jako parametru ciągu znaków HTML lub elementu DOM lub tablicy elementów lub obiektu jQuery. '' # 2'' nie jest żadnym z nich. – TheWanderingMind

Powiązane problemy