2010-01-24 14 views
8

Ho pensato che questo codice dovrebbe funzionare ma non lo ha, qualcuno può spiegare?appendTo() non è una funzione?

$("#addLinkLayout input.comment, #addLinkLayout input.link").each(function() { 
     $(this).val().appendTo('div#links'); 
}); 

Si dice che $(this).val().appendTo() non è una funzione.

risposta

8

appendTo può essere applicato solo su oggetti jQuery. Ma val restituisce una stringa.

Prova a modificare:

$("#addLinkLayout input.comment, #addLinkLayout input.link").each(function() { 
    $('div#links').append($(this).val()); 
}); 
1

val restituisce una stringa, non un oggetto jQuery, provare:

$('div#links').append($(this).val()); 
1

$ (this) .VAL() non restituisce un oggetto jQuery (restituisce il valore dell'elemento di ingresso). Quindi non può essere incatenato.

1

Si può cambiare a

$("#addLinkLayout input.comment, #addLinkLayout input.link").each(function() { 
    $('div#links').append($(this).val()); 
}); 
2

val() non restituisce un elemento DOM. Restituisce l'attributo value da un elemento DOM. Quindi se hai qualcosa come <input value="foo" />, chiamare val() su quel nodo ti darà una stringa "foo". Poiché la classe di stringa di javascript non ha un metodo appendTo, stai ricevendo un errore.

probabilmente si desidera qualcosa di simile

$('div#links').append($(this).val());