2011-08-25 19 views
27

Czy mogę wyciąć (całkowicie, ze wszystkimi stylami i atrybutami) element z lokalizacji i wkleić go w innym miejscu (np. body) z jQuery?wyciąć całkowicie i wkleić element

Ponadto, chcę umieścić ciąg (lub znacznik) w starej lokalizacji, ponieważ chcę zmienić jego miejsce na stare położenie na końcu skryptu.

Czy mogę? Jak?

Dziękuję.

+0

Ive nigdy nie słyszał o czymś takim, ale może utworzyć procedurę obsługi zdarzenia dla polecenia kopiowania, (mnóstwo przykładów w Google, a potem po prostu wyjąć wewnętrzną html, trzeba będzie zachować wewnętrzny kod HTML gdzieś po pierwsze, przed wklejeniem.Może w xml lub innych metod.Możeby być obiekt może być wycinany tylko wtedy, gdy już została wybrana pasta, możesz zrobić to wszystko w jednej funkcji.Nie myśl, że to niemożliwe myśli heres jak wykrywać kopiuj i wklej wydarzenia http://www.mkyong.com/jquery/how-to-detect-copy-paste-and-cut-behavior-with-jquery/ –

+0

Uwaga: Eleganckie rozwiązanie do zamiany 2 sąsiednich przedmiotów: http://stackoverflow.com/a/8638127/669677 –

Odpowiedz

33

appendTo() automatycznie przeniesie dopasowane elementy z eir bieżącej lokalizacji do określonego kontenera, który wydaje się być tym, czego potrzebujesz.

Można użyć after() wstawić nową zawartość przed przesunięciem elementu:

$("#yourElement").after("<p>Element was there</p>").appendTo("body"); 
+0

+1, ale jeśli CSS jest zastosowany w ten sposób, chociaż '.someContainer #tworzeńElement {kolor: niebieski; } "wyjęcie go z pojemnika" zrujnuje "styl. Więc może być bardziej skomplikowany. –

+0

Dziękuję. Używałem 'appendTo()', ale nie wiedziałem, że przeniesie elementy. – mrdaliri

+0

Shadow Wizard powiedział prawo, ma jQuery funkcję dla tego? – mrdaliri

7

można to zrobić przez klon najpierw skopiuj go do innej lokalizacji

$('#yourElement').clone().appendTo('#anotherDiv'); 

następnie usunąć starą,

$('#parentOfOldElement #yourElement').remove(); 

czy można zastąpić to, aby dostać się później

$('#parentOfOldElement #yourElement').replaceWith('<div id="toReplaceAgain">/div>'); 
+0

Dziękuję. Jestem początkującym w jQuery i nie słyszałem o 'remove()' – mrdaliri

+7

Zamiast tego można użyć '.detach()' 'clone()' i 'remove()' –

10

.detach() jest bardziej odpowiedni do tego zadania, jak @lvan sugerowane.

jQuery(jQuery("#yourElement").detach()).appendTo("body"); 
Powiązane problemy