2010-05-04 24 views
10

vi esto en nuestra base de código, el otro día:jQuery: 'estilo' Configuración de atributos del elemento con objeto

  link.attr('style', map({ 
       color: '#9a4d9e', 
       cursor: 'default' 
      })); 

map se define como:

function map(map) { 
    var cssValue = []; 

    for (var o in map) { 
     cssValue.push(o + ':' + map[o] + ';') 
    } 

    return cssValue.join(';'); 
} 

Es map necesariamente? ¿Hay una manera más corta de hacer esto?

Es importante tener en cuenta que el atributo "estilo" anula cualquier estilo establecido por una clase agregada/definida en el atributo "clase".

Respuesta

19

Probablemente no. Una mejor solución puede ser el uso de CSS:

link.css({color: '#9a4d9e', 
      cursor: 'default'}); 

Sin embargo, .attr('style',) elimina también el estilo en línea anterior, por lo que no se comporta exactamente de la misma.
Si va a utilizar attr, su entrada debe ser una cadena, no un objeto, no está especializada para trabajar con el atributo style. una alternativa en ese caso es:

link.attr('style', "color:'#9a4d9e';cursor:'default'"); 

Parece el limpiador en este caso. En otros casos, su map facilita la inserción de variables en el CSS.
map podría haber sido nombrado mejor sin embargo. También tiene un error de implementación - añade doble punto y coma entre los atributos: color:red;;cursor:default;

Una solución sencilla para quitar el estilo previas es llamar .removeAttr('style') antes de llamar css.

+0

Si desea borrar el estilo primero, vaya con 'link.attr ('css', ''). Css (.. .); ' – josh3736

+0

@josh - Gracias, probablemente debería haber mencionado eso. Sin embargo, eso sería 'link.removeAttr ('style')'. – Kobi

+0

+1 Aunque realmente no veo el punto del mapa sobre el uso de la cadena de CSS sin procesar. Puede ganar una (muy, muy) pequeña cantidad de comprobación sintáctica. – CurtainDog

0

.addClass ('highlight') al elemento. Donde su clase CSS está predefinida. (esto funcionó para mí, ya que no quería tomar 2 cambios de atributo de estilo)

Cuestiones relacionadas