11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour

Voilà ça fait un moment que je galère un peu et peux être que vous trouverez une façon plus simple de parvenir à mes fins.

Alors je crèe un petit code qui me permet de voir tous les membres de mon groupe. Je dois les selectionner pour ensuite récupérer tous les noms de ceux que j'ai cocher. Donc pour le moment je peux tous les cocher.
Explication du code
Quand je clique sur l'image du membre grâce au jquery je verifie que la checkbox sur laquelle se trouve le membre est bien coché. Si c'est le cas je transforme ma classe 'noncopie' en class'checker' et dans cette class je met en value le nom de la personne que j'ai cocher.

Donc pour le moment tous ça marche (j'espère que j'arrive à être clair)

Le soucis c'est que vu que les classes portent toute le meme nom
ex

<div class="coché" value="toto>"
...
<div class="coché" value="ttata>"



Et bien j'ai un soucis car evidement si je fait un

alert($('coché').attr('value'))


Il ne me ressort que le premier élément, normal.

Donc si quelqu'un connait une façon de prendre toutes les values d'une meme div sans obligatoirement changer le nom de ma class comme coché1, coché2....

Merci de m'aider
Modifié par Shinzo94 (29 Oct 2009 - 14:31)
Hello,

$('.coché').each(function() {
    alert(this.value);
});

Sinon, l'utilisation de caractères accentués pour un nom de classe est à proscrire.
Modifié par Julien Royer (29 Oct 2009 - 12:42)
Bonjour

Merci de ta réponse. J'en ai parlé a mon patron en fait il ne veux pas que je touche à la classe mais que je prenne les valeurs des checkbox

Donc j'ai fait


$('.selectedli').each(function() { 
   			 alert($('input[name=checkuser[]]').val());
	});


Le problème c'est qu'il me prend la premiere valeur de la checkbox même si elle n'est pas coché oO

alors que normalement le nom de la class si la checkbox n'est pas coché c'est "notselected"...
Sa voudrait dire que le alert n'est pas prit en compte que par ma classe .selectedli?
Modifié par Florent V. (29 Oct 2009 - 13:38)
Je décompose et explique ton code JS:
$('.selectedli') /* Tu récupères tous les éléments qui portent la classe "selectedli" */
.each(function() { /* Pour chaque élément de la liste tu exécute le code suivant: */
  alert(
    $('input[name=checkuser[]]') /* Sélectionner, dans la page, tous les éléments correspondant au sélecteur */
    .val() /* Récupérer le value du premier élément de cet ensemble */
  ); 
});

En gros tu as deux sélecteurs qui correspondent à deux ensemble d'éléments. Appelons-les A et B. Ce que tu fais, c'est que pour chaque élément de A tu vas travailler sur... le premier élément de B. C'est à dire toujours, à chaque fois, sur le même élément.

À priori tu aurais plutôt besoin d'utiliser $(this) dans le contexte du each(), et la méthode find pour trouver l'élément souhaité.
$('.selectedli').each(function() {
  var value = $(this).find('input[name=checkuser[]]').val();
  alert(value); 
});

Ou bien, plus direct:
$('.selectedli input[name=checkuser[]]').each(function() {
  var value = $(this).val();
  alert(value); 
});