Question

Je suis en train de mettre en œuvre le comportement du bouton radio HTML sur un ensemble de DIVs dans JQuery. Je veux supprimer la classe « set » de tous les éléments puis utilisez l'élément addClass () pour re-régler le (un) qui est cliqué:

$(".button").each(function() {
  $(this).click(function(){
    // what goes here to call removeClass() on *all* the elements?
    $(this).addClass("set");
  });
});

Je veux appeler removeClass () sur tous les éléments - dans ce cas $ ( "bouton "), mais je ne peux pas explicitement référence à $

(bouton".").

Je ne peux pas appeler $ (bouton « « ). RemoveClass ( » set ») en dehors de la boucle que cela fait partie d'un programme plus grand et le comportement dans la boucle each () peut être modifié par d'autres paramètres.

Est-il possible d'accéder à l'ensemble des éléments à l'intérieur, ou les passer comme une variable? Ou est-il une autre façon d'aborder le problème?

Était-ce utile?

La solution

Autres conseils

Cela semble inutilement complexe, il pourrait aider à obtenir une image plus claire de ce que vous essayez d'atteindre en fin de compte.

Dans votre boucle, vous pouvez chercher tout ce que vous aimez avec jquery $ ( « div ») // dans la boucle

Vous dites « mais je ne peux pas se référer à $ ( » bouton «) explicitement. ». Pourquoi?

$(".button").each(function() {
  $(this).click(function(){
    $('.button').removeClass('set'); // this should do it
    $(this).addClass("set");
  });
});

il suffit de changer:

$(".button").each(function() {
  $(this).click(function(){
    $('.button').removeClass("set");
    $(this).addClass("set");
  });
});

Je ne vois pas pourquoi ce serait un problème, un peu lent avoir à tirer .button chaque fois, mais c'est la seule façon contenant dans une boucle comme vous voulez.

toujours pas pourquoi vous ne pouvez pas faire référence $ ( «bouton ») de la fonction intérieure, mais pouvez-vous saisir les références dans une variable libre à la place?

var buttons = $(".button");
buttons.each(function() {
  $(this).click(function(){
    // what goes here to call removeClass() on *all* the elements?
    buttons.removeClass('set');
    $(this).addClass("set");
  });
});

Je lui ai répondu à la question posée dans le corps du texte. Si vous souhaitez définir la classe de tous les autre élément qui est un frère, utilisez les frères et sœurs

intéressant parce que cela est dans la feuille de route sous radioClass ()

Qu'est-ce que vous voulez est frères et soeurs , et ne pas utiliser chacun pour définir l'événement de clic soit.

$(".button").click(function() {
  $(this).addClass('set');
  $(this).siblings('.button').removeClass('set');
});

Voir cet exemple ci-dessus en action:

http://jsbin.com/ewiqe

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top