2010-01-24 21 views
8

Pensé que este código debería funcionar, pero no lo hizo, ¿alguien puede explicarlo?appendTo() no es una función?

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

Dice $(this).val().appendTo() no es una función.

Respuesta

8

appendTo sólo se puede aplicar en objetos jQuery. Pero val devuelve una cadena.

Tal vez puedas probar:

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

val devuelve una cadena, no un objeto jQuery, Proveedores:

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

$ (this) .val() no devuelve un objeto jQuery (que devuelve el valor del elemento de entrada). Entonces no puede ser encadenado

1

Puede cambiarlo a

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

val() no devuelve un elemento DOM. Devuelve el atributo value de un elemento DOM. Entonces, si tiene algo como <input value="foo" />, al llamar a val() en ese nodo le dará una cadena "foo". Dado que la clase de cadena de javascript no tiene un método appendTo, se obtiene un error.

es probable que desee algo así como

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