2010-05-04 23 views
10

Ho visto questo nella nostra base di codice, l'altro giorno:jQuery: 'stile' attributo Impostazione di elemento con oggetto

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

map è definito come:

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

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

    return cssValue.join(';'); 
} 

È map necessariamente? C'è un modo più breve per farlo?

È importante notare che l'attributo "stile" sostituisce tutti gli stili impostati da una classe aggiunta/definita nell'attributo "classe".

risposta

19

Probabilmente no. Una soluzione migliore potrebbe essere quella di usare i CSS:

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

Tuttavia, .attr('style',) rimuove anche il precedente stile in linea, in modo che non si comportano esattamente lo stesso.
Se si utilizza attr, l'input deve essere una stringa, non un oggetto, non è specializzato per l'attributo style. un'alternativa in questo caso è:

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

Sembra più pulito in questo caso. In altri casi, il tuo map semplifica l'inserimento di variabili nel CSS.
map potrebbe essere stato nominato meglio però. Essa ha anche un errore di implementazione - aggiunge doppie e virgola tra gli attributi: color:red;;cursor:default;

Una soluzione semplice per rimuovere lo stile anteprime è quello di chiamare prima di chiamare .removeAttr('style')css.

+0

Se si desidera cancellare prima lo stile, andare con 'link.attr ('css', ''). Css (.. .); ' – josh3736

+0

@josh - Grazie, probabilmente avrei dovuto dirlo. Sarebbe comunque 'link.removeAttr ('style')'. – Kobi

+0

+1 Anche se in realtà non vedo il punto della mappa utilizzando la stringa CSS non elaborata. Potrebbe vincere una (molto, molto) piccola quantità di controllo sintattico. – CurtainDog

0

.addClass ('evidenziare') sull'elemento. Dove la tua classe css è predefinita. (questo ha funzionato per me in quanto non voleva prendere 2 modifiche degli attributi di stile)

Problemi correlati