2011-05-17 21 views
5

Al crear objetos jQuery he utilizado la siguiente sintaxis últimamente, como se describe here:¿Cuál es la forma preferida de crear un objeto jQuery con atributos?

var $el = $('<div/>', { 
    class: 'class-1 class-2' 
}); 

Safari 5.0.5 da un error de sintaxis en el punto en que utilizo la construcción anterior.

Eliminar el segundo argumento y agregar clases con addClass elimina el error, pero parece bastante poco elegante.

¿Cómo se crean los objetos? Intenté con attr ({clase: 'clase-1'}) también, pero recibí el mismo error de sintaxis.

+1

Si pones la palabra "clase" en comillas simples o dobles, funcionará bien. – Pointy

Respuesta

7

No puede usar class; es una palabra reservada

Uso className lugar:

var $el = $('<div/>', { 
    className: 'class-1 class-2' 
}); 
+3

Puede usar "clase" si lo cita. – Pointy

+0

¡Ah, por supuesto! Muchas gracias. Después de más investigaciones encontré esta prueba de rendimiento para diferentes construcciones de creación de elementos: http://jsperf.com/create-element-with-attributes-jquery-1-4-object-vs-att/2 Parece que la sintaxis anterior no es el mejor rendimiento sabio – vorpyg

1

Desde class es una palabra reservada, es necesario poner entre comillas.

var $el = $('<div/>', { 
    "class": 'class-1 class-2' 
}); 
1

Recibirá un error como class es una palabra clave reservada. Se puede utilizar una cadena como identificador cuando un nombre de propiedad es una palabra clave reservada:

var $el = $('<div/>', { 
    'class': 'class-1 class-2' 
}); 
3

Haga el atributo de nombre de una cadena:

var $el = $('<div/>', { 
    'class': 'class-1 class-2' 
}); 

JSFiddle Example

Cuestiones relacionadas