/ / Gestion de 2 ensembles de boutons radio à l'aide de l'attribut activé et désactivé - jquery

Gestion de 2 ensembles de boutons radio à l'aide de l'attribut activé et désactivé - jquery

Je développe une application mobile et j'ai unCliquez sur Fonction dans jQuery qui applique une classe à un ensemble de boutons radio et supprime cette classe des autres boutons radio de la page. J'ai maintenant le cas d'utilisation où j'ai deux jeux de boutons radio, et maintenant la classe supprime tous les boutons radio et pas seulement les boutons radio du jeu actuel.

J'ai installé une démo sur JSFiddle qui a deuxensembles de boutons radio et vous pouvez voir comment ils semblent être attachés en quelque sorte, et je veux les garder inclus. J'espère que cela fait depuis, si vous avez des questions, n'hésitez pas à demander.

Code JSFiddle

Voici le code jQuery, découvrez le reste sur JSFiddle.

$(".form-radios label").attr("checked", "unchecked");

$(".form-radios label").click(function(){
$(this).attr("checked", "checked").addClass("checked");
$("label").not(this).removeClass("checked");
});​

Réponses:

2 pour la réponse № 1
$(".form-radios label").click(function(){
$(this).attr("checked", "checked").addClass("checked")
.siblings("label").removeClass("checked");
});​

siblings obtiendra que des éléments qui partagent le même élément parent.

http://jsfiddle.net/qxV9c/2/

EDIT: Avec la nouvelle structure:

$(".form-radios label").click(function(){
var $this = $(this);

$this.closest(".form-radios").find("label").removeClass("checked");
$this.attr("checked", "checked").addClass("checked");
});​

http://jsfiddle.net/qxV9c/5/


2 pour la réponse № 2

Trouvez simplement l'élément parent le plus proche au lieu de chercher partout:

$(".form-radios label").click(function() {
var $this = $(this);

$this.next("input").prop("checked", "checked"); // Took the liberty of fixing this up, too.
$this.addClass("checked");
$this.closest(".form-radios").find("label").not(this).removeClass("checked");
});​