Vérifier si une variable est impaire VERSUS ajouter une classe dans Jq

Vérifier si une variable est impaire VERSUS ajouter une classe dans Jquery

Je veux simplement vérifier si un bouton a été cliqué à l'aide de Jquery, l'approche traditionnelle consiste à ajouter une classe au bouton une fois qu'il a été cliqué.

Cependant, je trouve cette approche plus simple :


var active = 0
$('.buttonSelector').on('click',()=>{
 active += 1
 if (active %2){
     console.log('Not active')
 } else {
     console.log('Button is active')
}
})

Y a-t-il quelque chose qui ne va pas avec mon approche ?

Montrez la meilleure réponse

Ce que je recommanderais, c'est de définir flag sur true au clic, tandis que false comme valeur initiale. En général, votre approche est bonne.

Avatar G.G

Vous implémentez essentiellement un booléen avec des nombres. Il y a un problème potentiel avec ce code. Les nombres ne sont pas strictement des entiers en JavaScript, donc l'expression (active%2) peut avoir un petit résidu en raison d'erreurs d'arrondi. L'utilisation d'un booléen serait l'alternative la plus sûre : init avec var active = false; et bascule avec active = !active En dehors de cela, si vous n'utilisez pas de classes, vous perdez la possibilité de styliser le bouton en fonction de l'état qui pourrait être mauvaise UX. Mais cela dépend du cas d'utilisation réel

var active = false;
$('.buttonSelector').on('click', () => {
  active = !active;
  console.log(`Clicked: ${active}`)
  if (active) {
    //if active
  } else {
    //if not
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class="buttonSelector">Click</button>

Cela a l'air bien plus simple, merci !