Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/12/2011, 19h30   #1
Membre Expert
 
Inscription : décembre 2006
Messages : 2 048
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 2 048
Points : 1 087
Points : 1 087
Par défaut Afficher/Cacher un contenu via des cases à cocher

Bonsoir,
j'aimerais avoir al fonctionnalité suivante.
  1. Proposer des cases à cocher pour afficher/cocher des contenus de type A, B et C.
  2. Les contenus seront dans des div ayant de classe A, B ou C.

De quel côté dois-je regarder ?
rambc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2011, 20h33   #2
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 776
Points : 4 776
Bonsoir,
Citation:
De quel côté dois-je regarder ?
regarder à gauche, à droite et encore une fois à gauche, c'est ce que dit le code de la route...

Plus sérieusement sur le onclick des checkbox tu affiches/caches via le objet.style.display suivant l'état du cochage/décochage

exemple rapide :
Code html :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE HTML>
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">
#div_a {
  display : none;
}
</style>
<script type="text/javascript">
function montre( checkobjet, idobjet){
  var oElem = document.getElementById( idobjet);
  oElem.style.display = checkobjet.checked ? 'block' : 'none';
}
</script>
</head>
<body>
  <input type="checkbox" onclick="montre(this, 'div_a');"> : affiche A
  <div id="div_a">DIV A</div>
</body>
</html>
voila pour le principe après jQuery ou non c'est à toi de voir selon ton besoin.
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2011, 21h27   #3
Membre Expert
 
Inscription : décembre 2006
Messages : 2 048
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 2 048
Points : 1 087
Points : 1 087
Merci pour l'idée. Je vais essayer d'adapter cela à jQuery pour me baser sur l'utilisation de CLASS au lieu des ID.

Citation:
Envoyé par NoSmoking Voir le message
regarder à gauche, à droite et encore une fois à gauche, c'est ce que dit le code de la route...
Je craignais cette blague. Je vais être obligé de te dénoncer au près d'un modérateur... Mince, je suis cerné...
rambc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 18h17   #4
Membre Expert
 
Inscription : décembre 2006
Messages : 2 048
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 2 048
Points : 1 087
Points : 1 087
Bon, je me réponds.

Code javascript :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <script charset="utf-8" src="http://code.jquery.com/jquery-1.4.4.min.js"></script>
        <script type="text/javascript">
/* Sources :
    http://www.developpez.net/forums/d1014151/webmasters-developpement-web/javascript/bibliotheques-frameworks/jquery/checkbox-nuls/#post5662189
*/
$(document).ready(function(){
    $(":checkbox[name='tosee']").click(function(){
        var objChecked = $("input[name='tosee']:checked"),
            diveToHide = {
                'div_a': true,
                'div_b': true,
                'div_c': true,
            };
 
        for(var i = 0; i < objChecked.length; i++){
            diveToHide[$(objChecked[i]).val()] = false;
        }
 
        for(oneDivName in diveToHide){
            if(diveToHide[oneDivName]){
                $("div." + oneDivName).hide();
            } else {
                $("div." + oneDivName).show();
            }
        }
    });
});
        </script>
    </head>
 
    <body>
        <form>
            <input type="checkbox" name="tosee" checked="checked" value="div_a">
                Show A-contents
            </input>
            <input type="checkbox" name="tosee" checked="checked" value="div_b">
                Show B-contents
            </input>
            <input type="checkbox" name="tosee" checked="checked" value="div_c">
                Show C-contents
            </input>
        </form>
 
        <div class="div_a">
            DIV A-1
        </div>
 
        <div class="div_b">
            DIV B-1
            <div class="div_c">
                DIV C-1 (dans DIV B)
            </div>
        </div>
 
        <div class="div_c">
            DIV C-2
        </div>
 
        <div class="div_a">
            DIV A-2
            <div class="div_c">
                DIV C-3 (dans DIV A)
            </div>
        </div>
 
        <div class="div_b">
            DIV B-2
        </div>
 
        <div class="div_c">
            DIV C-4
        </div>
    </body>
</html>
rambc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 19h18   #5
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 776
Points : 4 776
Code :
1
2
3
4
5
diveToHide = {
    'div_a': true,
    'div_b': true,
    'div_c': true // , SUPPRIMER LA VIRGULE QUI PEUT FAIRE PLANTER
};
pourquoi ne pas utiliser each
Code :
1
2
3
for(var i = 0; i < objChecked.length; i++){
    diveToHide[$(objChecked[i]).val()] = false;
}
deviendrait
Code :
1
2
3
$.each( objChecked, function(){
  diveToHide[$(this).val()] = false;
});
ou mieux !!
Code :
1
2
3
$.each( objChecked, function( index, elem){
  diveToHide[$(elem).val()] = false;
});
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 21h40   #6
Membre Expert
 
Inscription : décembre 2006
Messages : 2 048
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 2 048
Points : 1 087
Points : 1 087
Merci pour la correction et l'amélioration qui fait un code plus joli.
rambc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 22h47   #7
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 776
Points : 4 776
cela marche aussi pour
Code :
1
2
3
4
5
6
7
for(oneDivName in diveToHide){
    if(diveToHide[oneDivName]){
        $("div." + oneDivName).hide();
    } else {
        $("div." + oneDivName).show();
    }
}
en mettant
Code :
1
2
3
4
5
6
7
8
9
$.each( diveToHide, function( index, item){
  var objet = $("div." + index);
  if( item){
    objet.hide();
  }
  else{
    objet.show();
  }
});
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 22h57   #8
Membre Expert
 
Inscription : décembre 2006
Messages : 2 048
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 2 048
Points : 1 087
Points : 1 087
C'est bien plus joli comme cela, je trouve... Merci.
rambc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h57.


 
 
 
 
Partenaires

Hébergement Web