2010-01-24 16 views
8

Ich dachte, dieser Code sollte funktionieren, aber es nicht, kann jemand erklären?appendTo() ist keine Funktion?

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

Es sagt $(this).val().appendTo() ist keine Funktion.

Antwort

8

appendTo kann nur auf jQuery Objekte angewendet werden. Aber val gibt eine Zeichenfolge zurück.

Versuchen Sie stattdessen:

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

val einen String zurückgibt, nicht ein Objekt jQuery, versuchen:

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

$ (this) .val() liefert kein jQuery-Objekt (es den Wert des Eingangselements zurückgibt). Es kann also nicht angekettet werden.

1

Sie können es auf

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

val() ist ein DOM-Element nicht zurück. Es gibt das Attribut value von einem DOM-Element zurück. Also, wenn Sie etwas wie <input value="foo" /> haben, erhalten Sie durch Aufruf von val() auf diesem Knoten eine Zeichenfolge "foo". Da die String-Klasse von JavaScript keine Methode appendTo hat, erhalten Sie einen Fehler.

Sie wollen wahrscheinlich etwas wie

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