2012-11-13 12 views
82

mi sono imbattuto il seguente script che verifica se un elemento ha classe a, e se non, aggiunge:Devo usare "hasClass" prima di "addClass"?

if (!$("div").hasClass("a")){ 
    $("div").addClass("a"); 
} 

Come jQuery non aggiungerà la classe se esiste già, questo potrebbe essere cambiato in :

$("div").addClass("a"); 

Tuttavia, c'è qualche miglioramenti delle prestazioni utilizzando hasClass prima, o sia questa utilizza lo stesso metodo che addClass fa comunque, e quindi duplicare la logica?

risposta

133

Il controllo .hasClass() non è utile perché jQuery will also always check dall'interno .addClass(). È solo un lavoro extra.

11

È possibile vedere al codice sorgente: https://github.com/jquery/jquery/blob/master/src/attributes/classes.js#L38-L45 che controllano se la classe esiste quando si utilizza addClass.

Quindi non v'è alcun motivo per utilizzare il .hasClass() in questo caso .. (un'eccezione sarebbe se si voleva svolgere più azioni se l'elemento non ha avuto la classe ..)

+3

Ciao da Salonicco e +1 - Non conoscevo il trucco '# LX-Y' :) – Jon

+3

Hey Jon :) È selezionabile anche dal mouse .. (* fai clic sul numero di riga e shift + clic su un altro per selezionare tutte le linee .. *) –