2010-11-22 14 views
6

Ho un metodo jQuery che voglio aggiungere l'elemento $ (questo) a.

mio codice è

$("#actions ul").append($(this)); 

Tuttavia questo non sembra fare nulla. Utilizzando la linea

.append($(this).html()) 

funziona, ma si afferra solo il bambino di $ (this) (un div) non l'intero elemento (An Li).

Probabilmente sto facendo qualcosa di idiota, spero che qualcuno me lo indichi.

+0

Benvenuti in Stack Overflow !! Abbiamo bisogno di vedere più codice. Da dove viene $ (questo)? un evento click, un mouse sopra? Dove? –

risposta

7

senza sapere esattamente cosa si riferisce alla this, l'unico motivo che posso pensare per $(this).html() per lavorare e non $(this) è che il primo metodo crea un nuovo elemento dal codice html, mentre aggiungendo $(this) si sposterà l'elemento.

vedere se il sottostante risolve il problema:

$("#actions ul").append($(this).clone()); 
+0

Grazie, era la funzione .clone() che mi mancava –

0

Non è chiaro a cosa si riferisce $(this), ma se è l'elemento figlio dell'elemento che si desidera, allora $(this).parent() dovrebbe ottenere l'elemento padre che si sta cercando.

+0

append() accetta string, element o jQuery object, quindi .append ($ (this) .parent()) è sufficiente. Inoltre, l'aggiunta di un oggetto jQuery sposta l'elemento, anziché clonarlo nel caso di $ (this) .parent(). Html(). –

+0

@ box9 - Grazie per la correzione, non mi sono reso conto di append(). Ho rimosso quella parte dalla mia risposta per mantenerla accurata. – mikel

0

Sembra che this sia impostato su un selettore che trova <div> anziché <li>. Puoi cambiare il selettore o, come suggerisce miket2e, usare invece .parent(). Nota: non è necessario utilizzare .html() poiché lo the .append function può utilizzare una stringa HTML o un oggetto jQuery.

Se pubblichi il valore di this, potremmo fornire una risposta più concreta.

0

In realtà si desidera utilizzare appendTo, questo catturerà l'intero elemento.

$(this).appendTo("#actions ul");