2012-03-27 17 views
8

Descubrí algo y estoy buscando un poco de incitación en cuanto a por qué una forma funciona y la otra no. Parece ser sólo una cosa sino como IE7 IE7, suspiro, todavía necesita un poco de apoyo en las aplicaciones en las que trabajo.jQuery crear elemento con diferencias de atributo

manera que funciona en IE7

var month = jQuery('<input/>'); 
month.attr('id', 'DOBmonth'); 
month.attr('title', 'Enter month'); 
month.attr('type', 'text'); 
month.attr('size', '1'); 
month.attr('maxlength', '2'); 
month.attr('class', 'numbersOnly'); 
month.attr('value', mm); 

De esta manera no funciona

var month = jQuery('<input/>', { 
     id: 'DOBmonth', 
     title: 'Enter month', 
     type: 'text', 
     size: 1, 
     maxlength: 2, 
     class: 'numbersOnly', 
     value: mm 
     }); 

Cualquiera tiene una idea de por qué solo una forma funciona en IE7, pero tampoco está bien en IE8 +, FF, Chrome y Safari.

+2

¿Recibe errores de Javascript usando la segunda manera en IE7? –

+0

IE7 y versiones anteriores tienen una política de escritura única frente a 'tipo' en elementos de 'entrada' (una vez que lo configura, no puede cambiarlo). Adivinar (por lo tanto, no publicar una respuesta), que por cualquier razón, el primer ejemplo está afectando esa política y el segundo no. De nuevo, no es una * respuesta *, pero tal vez algo de información. –

+0

también la clase debe estar entre comillas para IE – PHearst

Respuesta

21

La respuesta se puede encontrar en la API para la función jQuery().

Nota: Internet Explorer no le permitirá crear un elemento de entrada y cambiar su tipo; debe especificar el tipo usando <input type="checkbox" /> por ejemplo. Una demostración de esto puede puede ver a continuación:

no admitido en IE:

$('<input />', { 
    type: 'text', 
    name: 'test' 
}).appendTo("body"); 

solución compatible:

$('<input type="text" />').attr({ 
    name: 'test' 
}).appendTo("body"); 
+0

Aww. Gracias por el enlace. Me perdí esa parte inicialmente leyéndolo. –

3

according to jQuery:

Nota: Internet Explorer no te permite crear una entrada o elemento de botón y cambie su tipo; debe especificar el tipo

esto no funciona:

$('<input />', { 
    type: 'text', 
    name: 'test' 
}).appendTo("body"); 

sin que esto signifique:

$('<input type="text" />').attr({ 
    name: 'test' 
}).appendTo("body"); 
Cuestiones relacionadas