Em jQuery, é recomendado verificar se uma classe já está atribuída a um elemento antes de adicionar essa classe? Será que vai ter algum efeito?
Por exemplo:
<label class='foo'>bar</label>
Em caso de dúvida se a classe baz
já foi atribuída label
, esta seria a melhor abordagem:
var class = 'baz';
if (!$('label').hasClass(class)) {
$('label').addClass(class);
}
ou isso seria o suficiente:
$('label').addClass('baz');
.hasClass
apenas quando preciso verificar se existe aula, se só preciso atribuir aula - eu uso.addClass
. jQuery não duplica as classesRespostas:
Basta ligar
addClass()
. jQuery fará a verificação para você. Se você verificar por conta própria, estará duplicando o trabalho, pois o jQuery ainda executará a verificação para você.fonte
Uma simples verificação no console diria que ligar
addClass
várias vezes com a mesma classe é seguro.Especificamente, você pode encontrar o cheque na fonte
fonte
Esta questão chamou minha atenção após outra que foi marcada como uma duplicata desta .
Esta resposta resume a resposta aceita com alguns detalhes adicionais.
Você está tentando otimizar evitando uma verificação desnecessária; a esse respeito, aqui estão alguns fatores que você deve estar ciente:
class="collapse"
em seu HTML, a chamadaElement.classList.add("collapse");
não adicionará uma classe de recolhimento adicional . Não sei a implementação subjacente, mas acho que deve ser boa o suficiente.addClass
eremoveClass
implementações (eu verifiquei o código fonte ). PoisaddClass
, depois de fazer algumas verificações e se existir uma classe, o JQuery não tenta adicioná-la novamente. Da mesma forma pararemoveClass
, JQuery faz algo ao longo da linhacur.replace( " " + clazz + " ", " " );
que removerá uma classe apenas se ela existir.Vale a pena notar, JQuery faz alguma otimização em sua
removeClass
implementação para evitar uma nova renderização sem sentido. É assimPortanto, a melhor micro otimização que você poderia fazer seria com o objetivo de evitar sobrecargas de chamada de função e as verificações de implementação associadas.
Digamos que você queira alternar uma classe chamada
collapse
, se você está totalmente no controle de quando a classe é adicionada ou removida, e se acollapse
classe está ausente inicialmente, então você pode otimizar da seguinte forma:Como um aparte, se você estiver alternando uma classe devido a mudanças na posição de rolagem, é altamente recomendável acelerar o tratamento de evento de rolagem.
fonte
fonte