Pregunta

He creado un ejemplo autónomo para descubrir por qué esto solo funciona en Firefox:

var ul = jQuery('<ul></ul>');

jQuery(selector).children().each(function() {
   var li = jQuery('<li></li>');
   var label = '<label for="' + this.id + '">' + this.name + '</label>';
   li.append(label);
   li.append(this);
   ul.append(li);
});

Cualquier navegador webkit o incluso IE falla en esta línea:

li.append(this);

este es un HTMLInputElement. ¿Alguna idea?

Gracias, Pete

¿Fue útil?

Solución

El problema es que " esto " es un nodo DOM ya ubicado en algún lugar. No puede mover los nodos DOM, que ya están ubicados en algún lugar sin eliminarlos o copiarlos primero.

Si quieres:

  • muévelo, tienes que hacerlo

    li.append ($ (this) .remove ())

  • cópialo, lo harás

    li.append ($ (this) .clone (true))

En realidad, estoy bastante perplejo, que debería funcionar en FF. Si lo hace, es un error de FF.

Saludos,

Otros consejos

Quizás este sea un problema con el elemento del que está intentando seleccionar los hijos, o un problema con la versión de jQuery que está utilizando.

Estoy usando 1.3.2 y usando su código (copiar y pegar) puedo ejecutar esto con éxito en FF 3, IE 8 y Chrome.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top