¿Por qué esto solo funciona en Firefox?
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
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.