Estoy analizando una respuesta JSON a través de $.ajax()
y construyendo un formulario a partir de los valores de este objeto. El guión que he escrito es largo, pero esto es lo que está haciendo:jQuery .attr ('tipo', 'enviar') en un elemento de botón que me da un error extraño en IE7
dinámicamente la creación:
~ un elemento de formulario,
~ un elemento de campos,
~ un elemento de botón,
~ 20 o así entradas de texto y elementos de la etiquetaAnexión de las entradas y las etiquetas a la fieldset
al añadir el botón a la FIELDSET
añadiendo el fieldset a la forma
- Al añadir la forma de un elemento en el DOM existente.
Todo funciona en todos los navegadores excepto en un pequeño fragmento en IE. Lo he reducido a la siguiente pieza de código. (doc
es una variable que contiene document
)
fieldset.append(
$(doc.createElement('button'))
.addClass('ui-button')
.attr('type', 'submit')
.html('Re-Rate')
.button()
);
Este es el paso 3 de arriba. Crea un elemento de botón, agrega una clase, establece el atributo type
en submit
, le da un texto y luego lo agrega al conjunto de campos. IE falla con el error "Objeto no admite esta acción"
Si comento hacia fuera de la línea de .attr()
así:
fieldset.append(
$(doc.createElement('button'))
.addClass('ui-button')
//.attr('type', 'submit')
.html('Re-Rate')
.button()
);
Todo funciona como se esperaba.
Si usted se está preguntando, el método es .button()
jQuery UI
Lo que sucede si 'doc.createElement()' en primer lugar, se asigna el tipo de JS simple, y luego convertirlo en un objeto jQuery? ¿Solo para descubrir en qué paso está el problema? –
Es posible que desee considerar el uso de una jQuery plantillas [motor] (http://github.com/nje/jquery-tmpl) - [ejemplo] (http://weblogs.asp.net/scottgu/archive/2010/ 05/07/jquery-templates-and-data-linking-and-microsoft-contribuyendo-a-jquery.aspx) –
Buena idea John. Pekka, por la respuesta de Nick, parece ser jQuery-By-Design. – Stephen