11496 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai de la difficulté à créer une fonction jQuery qui me permettrait de désafficher tous les éléments d'une classe. Ça peut paraître rudimentaire, mais pour l'instant j'ai pas mal de difficulté à maîtriser jQuery, alors ça ne l'est pas pour moi.

Je vous montre une version (très) simplifiée de mon site pour vous simplifier la tâche de m'aider. Voilà, j'avais commencé par faire ce site avec ma fonction en question en Javascript, ce qui fonctionnait parfaitement!

function desafficher(classe)
{
var tab_class = document.getElementsByClassName(classe);
for (var i=0;i<tab_class.length;i++) {
tab_class[i].style.display="none";
}
}


Mais hélas, Internet Explorer ne prend pas en charge le getElementsByClassName. Est-il possible de refaire cette fonction en jQuery? Je pressens que oui, mais j'ai besoin de votre aide parce que la mienne ne fonctionne pas. Voici donc la version simplifiée de la page que je voudrais faire, qui ne fonctionne pas :


<html>

<head>


<script src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script>

$(document).ready(function() {
    $(".bouton").click(function() {
        $(".sec").css('display', 'none');
    });

});


</script>


<script type="text/javascript" language="javascript">

<!--


function afficher(id)
{
    document.getElementById(id).style.display="block";
}


//-->


</script>


</head>

<body>


<div id="boutons" style="position:absolute; left:20px;">


<div id="chap1">

<div id="part1">

<div id="sec1" class="bouton">
<a onclick="afficher('1.1.1');">1.1.1</a>
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('1.1.2');">1.1.2</a>
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('1.1.3');">1.1.3</a>
</div>

</div>



<div id="part2">

<div id="sec1" class="bouton">
<a onclick="afficher('1.2.1');">1.2.1</a>
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('1.2.2');">1.2.2</a>
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('1.2.3');">1.2.3</a>
</div>

</div>



<div id="part3">

<div id="sec1" class="bouton">
<a onclick="afficher('1.3.1');">1.3.1</a>
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('1.3.2');">1.3.2</a>
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('1.3.3');">1.3.3</a>
</div>

</div>

</div>






<div id="chap2">

<div id="part1">

<div id="sec1" class="bouton">
<a onclick="afficher('2.1.1');">2.1.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('2.1.2');">2.1.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('2.1.3');">2.1.3
</div>

</div>



<div id="part2">

<div id="sec1" class="bouton">
<a onclick="afficher('2.2.1');">2.2.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('2.2.2');">2.2.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('2.2.3');">2.2.3
</div>

</div>



<div id="part3">

<div id="sec1" class="bouton">
<a onclick="afficher('2.3.1');">2.3.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('2.3.2');">2.3.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('2.3.3');">2.3.3
</div>

</div>

</div>





<div id="chap3">

<div id="part1">

<div id="sec1" class="bouton">
<a onclick="afficher('3.1.1');">3.1.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('3.1.2');">3.1.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('3.1.3');">3.1.3
</div>

</div>



<div id="part2">

<div id="sec1" class="bouton">
<a onclick="afficher('3.2.1');">3.2.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('3.2.2');">3.2.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('3.2.3');">3.2.3
</div>

</div>



<div id="part3">

<div id="sec1" class="bouton">
<a onclick="afficher('3.3.1');">3.3.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('3.3.2');">3.3.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('3.3.3');">3.3.3
</div>

</div>

</div>


</div>





<div id="texte" style="position:absolute; left:80px;">


<div>

<div>

<div id="1.1.1" class="sec">
1.1.1
</div>

<div id="1.1.2" class="sec">
1.1.2
</div>

<div id="1.1.3" class="sec">
1.1.3
</div>

</div>



<div>

<div id="1.2.1" class="sec">
1.2.1
</div>

<div id="1.2.2" class="sec">
1.2.2
</div>

<div id="1.2.3" class="sec">
1.2.3
</div>

</div>



<div>

<div id="1.3.1" class="sec">
1.3.1
</div>

<div id="1.3.2" class="sec">
1.3.2
</div>

<div id="1.3.3" class="sec">
1.3.3
</div>

</div>

</div>






<div>

<div>

<div id="2.1.1" class="sec">
2.1.1
</div>

<div id="2.1.2" class="sec">
2.1.2
</div>

<div id="2.1.3" class="sec">
2.1.3
</div>

</div>



<div>

<div id="2.2.1" class="sec">
2.2.1
</div>

<div id="2.2.2" class="sec">
2.2.2
</div>

<div id="2.2.3" class="sec">
2.2.3
</div>

</div>



<div>

<div id="2.3.1" class="sec">
2.3.1
</div>

<div id="2.3.2" class="sec">
2.3.2
</div>

<div id="2.3.3" class="sec">
2.3.3
</div>

</div>

</div>





<div>

<div>

<div id="3.1.1" class="sec">
3.1.1
</div>

<div id="3.1.2" class="sec">
3.1.2
</div>

<div id="3.1.3" class="sec">
3.1.3
</div>

</div>



<div>

<div id="3.2.1" class="sec">
3.2.1
</div>

<div id="3.2.2" class="sec">
3.2.2
</div>

<div id="3.2.3" class="sec">
3.2.3
</div>

</div>



<div>

<div id="3.3.1" class="sec">
3.3.1
</div>

<div id="3.3.2" class="sec">
3.3.2
</div>

<div id="3.3.3" class="sec">
3.3.3
</div>

</div>

</div>


</div>










</body>
</html>





Alors Quand on clique sur une section (1.3.2 par exemple), ça devrait afficher le texte correspondant à droite. Si vous remplacez la fonction jQuery erronée par ma fonction Javascript, ça marche. Les chiffres sur lesquels on clique apparaissent à droite. Mais avec ma fonction jQuery, ça ne marche pas.

Alors, s'il vous plaît, quelle est mon erreur? Pouvez-vous corriger mon code?

Je suis débutant et j'ai besoin de pas mal d'assistance, alors si vous pouviez faire votre propre version de ma fonction corrigée, ce serait apprécié!

Merci beaucoup![/i]
Modifié par 6l20 (11 May 2013 - 11:08)
Salut,

Pas sûr d'avoir tout pigé dans ton exemple.
Ci-dessous, un bout de code qui masque tous les éléments possédant la classe "maClasse" lorsque l'on clique sur les éléments ayant la classe "monBouton"...

(function($) {
  $(".monBouton").on("click", function(e) {
    e.preventDefault();
    $(".maClasse").hide();
  });
})(jQuery);


Si tu souhaites récupérer une classe particulière selon les boutons, tu dois stocker cette info quelque part.
Par exemple dans un attribut : data-classe="maClasse".
Ce qui te donne ceci comme html :
<a href="#" class="monBouton" data-classe="maClasse">lien</a>

Et côté jQuery :
(function($) {
  $(".monBouton").on("click", function(e) {
    e.preventDefault();
    var target = $(this).attr("data-classe");
    $("." + classe).hide();
  });
})(jQuery);

Il y a évidemment d'autres approches possibles.
Et garder un oeil sur l'accessibilité (JS désactivé) serait un plus.. Smiley cligne

tm
Merci énormément tm™,

Je me demandais si j'allais avoir une réponse!

La tienne semble avoir du sens, je crois que j'aurai seulement besoin de la première partie de ta réponse, étant donné que mon but est de tout désafficher à chaque fois que je clique sur quelque chose qui est dans la classe "bouton", puis d'afficher des éléments d'après ma fonction afficher (id). Alors seulement ce que je souhaite s'afficher s'affiche à chaque fois!

Pour ta solution, il doit il y avoir quelque chose que j'ai manqué, à date ça ne fonctionne pas... peux-tu, ou n'importe qui d'autre, vérifier ce qui ne fonctionne pas? Ce doit être seulement une petite anicroche.

Avant, j'avais fait la même page seulement en Javascript, mais IE ne prend pas Getelementbyname alors je n'ai pas pu la conserver comme ça. Cependant, ça fonctionnait. Quand on cliquait sur des numéros à gauche, ça apparaissait à droite.

Voici ce que j'ai à date, d'après ce que j'ai compris de ce que ça donnerait en jQuery. Vous pouvez copier-coller et vérifier par vous-mêmes :


<html>

<head>


<script src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script>

$(document).ready(function($) {
  $(".bouton").on("click", function(e) {
    e.preventDefault();
    $(".sec").hide();
  });
})(jQuery);


</script>


<script type="text/javascript" language="javascript">

<!--


function afficher(id)
{
    document.getElementById(id).style.display="block";
}


//-->


</script>


</head>

<body>


<div id="boutons" style="position:absolute; left:20px;">


<div id="chap1">

<div id="part1">

<div id="sec1" class="bouton">
<a onclick="afficher('1.1.1');">1.1.1</a>
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('1.1.2');">1.1.2</a>
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('1.1.3');">1.1.3</a>
</div>

</div>



<div id="part2">

<div id="sec1" class="bouton">
<a onclick="afficher('1.2.1');">1.2.1</a>
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('1.2.2');">1.2.2</a>
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('1.2.3');">1.2.3</a>
</div>

</div>



<div id="part3">

<div id="sec1" class="bouton">
<a onclick="afficher('1.3.1');">1.3.1</a>
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('1.3.2');">1.3.2</a>
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('1.3.3');">1.3.3</a>
</div>

</div>

</div>






<div id="chap2">

<div id="part1">

<div id="sec1" class="bouton">
<a onclick="afficher('2.1.1');">2.1.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('2.1.2');">2.1.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('2.1.3');">2.1.3
</div>

</div>



<div id="part2">

<div id="sec1" class="bouton">
<a onclick="afficher('2.2.1');">2.2.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('2.2.2');">2.2.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('2.2.3');">2.2.3
</div>

</div>



<div id="part3">

<div id="sec1" class="bouton">
<a onclick="afficher('2.3.1');">2.3.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('2.3.2');">2.3.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('2.3.3');">2.3.3
</div>

</div>

</div>





<div id="chap3">

<div id="part1">

<div id="sec1" class="bouton">
<a onclick="afficher('3.1.1');">3.1.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('3.1.2');">3.1.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('3.1.3');">3.1.3
</div>

</div>



<div id="part2">

<div id="sec1" class="bouton">
<a onclick="afficher('3.2.1');">3.2.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('3.2.2');">3.2.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('3.2.3');">3.2.3
</div>

</div>



<div id="part3">

<div id="sec1" class="bouton">
<a onclick="afficher('3.3.1');">3.3.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('3.3.2');">3.3.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('3.3.3');">3.3.3
</div>

</div>

</div>


</div>





<div id="texte" style="position:absolute; left:80px;">


<div>

<div>

<div id="1.1.1" class="sec">
1.1.1
</div>

<div id="1.1.2" class="sec">
1.1.2
</div>

<div id="1.1.3" class="sec">
1.1.3
</div>

</div>



<div>

<div id="1.2.1" class="sec">
1.2.1
</div>

<div id="1.2.2" class="sec">
1.2.2
</div>

<div id="1.2.3" class="sec">
1.2.3
</div>

</div>



<div>

<div id="1.3.1" class="sec">
1.3.1
</div>

<div id="1.3.2" class="sec">
1.3.2
</div>

<div id="1.3.3" class="sec">
1.3.3
</div>

</div>

</div>






<div>

<div>

<div id="2.1.1" class="sec">
2.1.1
</div>

<div id="2.1.2" class="sec">
2.1.2
</div>

<div id="2.1.3" class="sec">
2.1.3
</div>

</div>



<div>

<div id="2.2.1" class="sec">
2.2.1
</div>

<div id="2.2.2" class="sec">
2.2.2
</div>

<div id="2.2.3" class="sec">
2.2.3
</div>

</div>



<div>

<div id="2.3.1" class="sec">
2.3.1
</div>

<div id="2.3.2" class="sec">
2.3.2
</div>

<div id="2.3.3" class="sec">
2.3.3
</div>

</div>

</div>





<div>

<div>

<div id="3.1.1" class="sec">
3.1.1
</div>

<div id="3.1.2" class="sec">
3.1.2
</div>

<div id="3.1.3" class="sec">
3.1.3
</div>

</div>



<div>

<div id="3.2.1" class="sec">
3.2.1
</div>

<div id="3.2.2" class="sec">
3.2.2
</div>

<div id="3.2.3" class="sec">
3.2.3
</div>

</div>



<div>

<div id="3.3.1" class="sec">
3.3.1
</div>

<div id="3.3.2" class="sec">
3.3.2
</div>

<div id="3.3.3" class="sec">
3.3.3
</div>

</div>

</div>


</div>










</body>
</html>

Modifié par 6l20 (11 May 2013 - 11:08)
Modérateur
tm™ a écrit :
C'est soit
(function($) {})(jQuery);
ou
$(document).ready(function() {});

La première version évitant d'éventuels conflits avec le $ et étant un peu plus courte... Smiley cligne

Petit test qui fonctionne...

tm

Sauf que en fait non. La première version déclare une fonction anonyme et l'éxecute immédiatement. Cela sert à créer un espace de nom et peux s'utiliser ainsi:
(function() {})();

déclarer un paramètre $ et lui passer jQuery permet de pouvoir utiliser le $() à l'intérieur s'il n'est pas disponible globalement (jQuery en mode noConflict).

Par contre, dans ce cas de figure, il sera exécuté directement. Or son script se trouvant au début il sera inefficace car il cherchera à l'appliquer à des éléments n'existant pas encore, alorsla seconde proposition est correcte car ready() créera un écouteur d'évènement qui ne se déclenchera que lorsque le DOM aura été chargé en mémoire:


$(document).ready(function() {});


Nottons que si $ n'est pas disponible immédiatement on fera l'une des propositions suivantes:


(function($) {
  $(document).ready(function() {});
})(jQuery);
// sinon jQuery nous permet de lui passer $ directement en premier paramètre:
jQuery(document).ready(function($) {});
Merci, c'est sympa de m'avoir expliqué avec un exemple, j'ai pu refaire mon code, mais je remarque qu'à part l'entrée c'est le seul que j'avais. Or, un coup refait, ça ne fonctionne pas plus... Quelle est la différence entre ma page et l'exemple qui fait que ça ne fonctionne pas dans mon cas?

Maintenant, j'ai comme code :


<html>

<head>


<script src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script>

(function($) {

  $('.bouton').on('click', function(e) {

    e.preventDefault();
    $('.sec').hide();

  });

})(jQuery)


<script type="text/javascript" language="javascript">

<!--


function afficher(id)
{
    document.getElementById(id).style.display="block";
}


//-->


</script>


</head>

<body>


<div id="boutons" style="position:absolute; left:20px;">


<div id="chap1">

<div id="part1">

<div id="sec1" class="bouton">
<a onclick="afficher('1.1.1');">1.1.1</a>
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('1.1.2');">1.1.2</a>
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('1.1.3');">1.1.3</a>
</div>

</div>



<div id="part2">

<div id="sec1" class="bouton">
<a onclick="afficher('1.2.1');">1.2.1</a>
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('1.2.2');">1.2.2</a>
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('1.2.3');">1.2.3</a>
</div>

</div>



<div id="part3">

<div id="sec1" class="bouton">
<a onclick="afficher('1.3.1');">1.3.1</a>
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('1.3.2');">1.3.2</a>
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('1.3.3');">1.3.3</a>
</div>

</div>

</div>






<div id="chap2">

<div id="part1">

<div id="sec1" class="bouton">
<a onclick="afficher('2.1.1');">2.1.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('2.1.2');">2.1.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('2.1.3');">2.1.3
</div>

</div>



<div id="part2">

<div id="sec1" class="bouton">
<a onclick="afficher('2.2.1');">2.2.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('2.2.2');">2.2.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('2.2.3');">2.2.3
</div>

</div>



<div id="part3">

<div id="sec1" class="bouton">
<a onclick="afficher('2.3.1');">2.3.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('2.3.2');">2.3.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('2.3.3');">2.3.3
</div>

</div>

</div>





<div id="chap3">

<div id="part1">

<div id="sec1" class="bouton">
<a onclick="afficher('3.1.1');">3.1.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('3.1.2');">3.1.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('3.1.3');">3.1.3
</div>

</div>



<div id="part2">

<div id="sec1" class="bouton">
<a onclick="afficher('3.2.1');">3.2.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('3.2.2');">3.2.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('3.2.3');">3.2.3
</div>

</div>



<div id="part3">

<div id="sec1" class="bouton">
<a onclick="afficher('3.3.1');">3.3.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('3.3.2');">3.3.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('3.3.3');">3.3.3
</div>

</div>

</div>


</div>





<div id="texte" style="position:absolute; left:80px;">


<div>

<div>

<div id="1.1.1" class="sec">
1.1.1
</div>

<div id="1.1.2" class="sec">
1.1.2
</div>

<div id="1.1.3" class="sec">
1.1.3
</div>

</div>



<div>

<div id="1.2.1" class="sec">
1.2.1
</div>

<div id="1.2.2" class="sec">
1.2.2
</div>

<div id="1.2.3" class="sec">
1.2.3
</div>

</div>



<div>

<div id="1.3.1" class="sec">
1.3.1
</div>

<div id="1.3.2" class="sec">
1.3.2
</div>

<div id="1.3.3" class="sec">
1.3.3
</div>

</div>

</div>






<div>

<div>

<div id="2.1.1" class="sec">
2.1.1
</div>

<div id="2.1.2" class="sec">
2.1.2
</div>

<div id="2.1.3" class="sec">
2.1.3
</div>

</div>



<div>

<div id="2.2.1" class="sec">
2.2.1
</div>

<div id="2.2.2" class="sec">
2.2.2
</div>

<div id="2.2.3" class="sec">
2.2.3
</div>

</div>



<div>

<div id="2.3.1" class="sec">
2.3.1
</div>

<div id="2.3.2" class="sec">
2.3.2
</div>

<div id="2.3.3" class="sec">
2.3.3
</div>

</div>

</div>





<div>

<div>

<div id="3.1.1" class="sec">
3.1.1
</div>

<div id="3.1.2" class="sec">
3.1.2
</div>

<div id="3.1.3" class="sec">
3.1.3
</div>

</div>



<div>

<div id="3.2.1" class="sec">
3.2.1
</div>

<div id="3.2.2" class="sec">
3.2.2
</div>

<div id="3.2.3" class="sec">
3.2.3
</div>

</div>



<div>

<div id="3.3.1" class="sec">
3.3.1
</div>

<div id="3.3.2" class="sec">
3.3.2
</div>

<div id="3.3.3" class="sec">
3.3.3
</div>

</div>

</div>


</div>










</body>
</html>



Quelqu'un a une idée?

Merci
Modifié par 6l20 (11 May 2013 - 11:09)
Modérateur
Zno a écrit :
Quelle est la différence entre ma page et l'exemple qui fait que ça ne fonctionne pas dans mon cas?


L'expication que j'ai donnée… soit tu mets ton script en fin de page, soit tu utilises:
$(document).ready(function() {});
oui excuse-moi c'est vrai, je n'ai pas bien appliqué ta réponse.

Bon, je viens d'essayer, et malheureusement, il apparaît qu'il me manque encore un petit quelque chose... En tout cas, on devrait être près non?

À date j'ai :

<html>

<head>


<script src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script>

$(document).ready(function() {

  $('.bouton').on('click', function(e) {

    e.preventDefault();
    $('.sec').hide();

  });

})(jQuery)


<script type="text/javascript" language="javascript">

<!--


function afficher(id)
{
    document.getElementById(id).style.display="block";
}


//-->


</script>


</head>

<body>


<div id="boutons" style="position:absolute; left:20px;">


<div id="chap1">

<div id="part1">

<div id="sec1" class="bouton">
<a onclick="afficher('1.1.1');">1.1.1</a>
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('1.1.2');">1.1.2</a>
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('1.1.3');">1.1.3</a>
</div>

</div>



<div id="part2">

<div id="sec1" class="bouton">
<a onclick="afficher('1.2.1');">1.2.1</a>
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('1.2.2');">1.2.2</a>
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('1.2.3');">1.2.3</a>
</div>

</div>



<div id="part3">

<div id="sec1" class="bouton">
<a onclick="afficher('1.3.1');">1.3.1</a>
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('1.3.2');">1.3.2</a>
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('1.3.3');">1.3.3</a>
</div>

</div>

</div>






<div id="chap2">

<div id="part1">

<div id="sec1" class="bouton">
<a onclick="afficher('2.1.1');">2.1.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('2.1.2');">2.1.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('2.1.3');">2.1.3
</div>

</div>



<div id="part2">

<div id="sec1" class="bouton">
<a onclick="afficher('2.2.1');">2.2.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('2.2.2');">2.2.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('2.2.3');">2.2.3
</div>

</div>



<div id="part3">

<div id="sec1" class="bouton">
<a onclick="afficher('2.3.1');">2.3.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('2.3.2');">2.3.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('2.3.3');">2.3.3
</div>

</div>

</div>





<div id="chap3">

<div id="part1">

<div id="sec1" class="bouton">
<a onclick="afficher('3.1.1');">3.1.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('3.1.2');">3.1.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('3.1.3');">3.1.3
</div>

</div>



<div id="part2">

<div id="sec1" class="bouton">
<a onclick="afficher('3.2.1');">3.2.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('3.2.2');">3.2.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('3.2.3');">3.2.3
</div>

</div>



<div id="part3">

<div id="sec1" class="bouton">
<a onclick="afficher('3.3.1');">3.3.1
</div>

<div id="sec2" class="bouton">
<a onclick="afficher('3.3.2');">3.3.2
</div>

<div id="sec3" class="bouton">
<a onclick="afficher('3.3.3');">3.3.3
</div>

</div>

</div>


</div>





<div id="texte" style="position:absolute; left:80px;">


<div>

<div>

<div id="1.1.1" class="sec">
1.1.1
</div>

<div id="1.1.2" class="sec">
1.1.2
</div>

<div id="1.1.3" class="sec">
1.1.3
</div>

</div>



<div>

<div id="1.2.1" class="sec">
1.2.1
</div>

<div id="1.2.2" class="sec">
1.2.2
</div>

<div id="1.2.3" class="sec">
1.2.3
</div>

</div>



<div>

<div id="1.3.1" class="sec">
1.3.1
</div>

<div id="1.3.2" class="sec">
1.3.2
</div>

<div id="1.3.3" class="sec">
1.3.3
</div>

</div>

</div>






<div>

<div>

<div id="2.1.1" class="sec">
2.1.1
</div>

<div id="2.1.2" class="sec">
2.1.2
</div>

<div id="2.1.3" class="sec">
2.1.3
</div>

</div>



<div>

<div id="2.2.1" class="sec">
2.2.1
</div>

<div id="2.2.2" class="sec">
2.2.2
</div>

<div id="2.2.3" class="sec">
2.2.3
</div>

</div>



<div>

<div id="2.3.1" class="sec">
2.3.1
</div>

<div id="2.3.2" class="sec">
2.3.2
</div>

<div id="2.3.3" class="sec">
2.3.3
</div>

</div>

</div>





<div>

<div>

<div id="3.1.1" class="sec">
3.1.1
</div>

<div id="3.1.2" class="sec">
3.1.2
</div>

<div id="3.1.3" class="sec">
3.1.3
</div>

</div>



<div>

<div id="3.2.1" class="sec">
3.2.1
</div>

<div id="3.2.2" class="sec">
3.2.2
</div>

<div id="3.2.3" class="sec">
3.2.3
</div>

</div>



<div>

<div id="3.3.1" class="sec">
3.3.1
</div>

<div id="3.3.2" class="sec">
3.3.2
</div>

<div id="3.3.3" class="sec">
3.3.3
</div>

</div>

</div>


</div>










</body>
</html>

Modifié par 6l20 (11 May 2013 - 11:09)
La méthode "on()" ne doit pas être disponible avec ta version de jQuery.
Soit tu upgrades jQuery, soit tu retournes à "click()"...
Et balances toutes tes balises script avant la fermeture du body ! Smiley biggrin

tm
kustolovic a écrit :
L'expication que j'ai donnée… soit tu mets ton script en fin de page, soit tu utilises:
$(document).ready(function() {});


Je n'avais pas regardé le code* et présumais que pour des raisons évidentes de performance et d'affichage, les scripts se trouvaient à la fin du body. Je préconise donc ta première solution...

tm

* et pour cause, aucune coloration syntaxique !!!
Modifié par tm™ (11 May 2013 - 09:27)
@Zno : Merci d'utiliser les boutons de colorisation syntaxique lorsque vous présentez du code, pour en faciliter la lecture.
Inutile également de reproduire des pavés de codes à chacun de vos messages, une page de test arrangera tout le monde, merci.
a écrit :
Je n'avais pas regardé le code* et présumais que pour des raisons évidentes de performance et d'affichage, les scripts se trouvaient à la fin du body. Je préconise donc ta première solution...

tm

* et pour cause, aucune coloration syntaxique !!!


Désolé pour le manque de colorisation syntaxique, je ne suis pas familier alors c'est simplement parce que je n'y ai jamais pensé, je ne le referai plus.

Je ne voulais pas surcharger ce site avec mes messages, seulement que je croyais qu'à chaque fois, c'était nécessaire de mettre mon code. Là, tm™, tu me dis que tu ne regardais pas mes codes, alors j'ai un peu tout mis ça pour rien, mais s'il te plaît comprends que comme j'ai dit, je suis débutant et nécessairement, il va falloir me faire penser à pas mal de choses. Mais si tu prends le temps, je crois que je vais beaucoup apprendre avec ton aide.

Les raisons pour lesquelles mon script doit être à la fin de mon body ne sont pas aussi évidentes pour moi que pour toi. Là, j'ai essayé cette solution, avec la fonction

$(document).ready(function() {

$('.bouton').on('click', function(e) {

e.preventDefault();
$('.sec').hide();

});

})(jQuery)


et ça ne fonctionne pas. J'ai aussi essayé ma solution, comme tu m'as dit, avec la fonction

$(function($) {

$('.bouton').on('click', function(e) {

e.preventDefault();
$('.sec').hide();

});

})(jQuery)


qui ne fonctionne pas non plus.

Un modérateur me dit d'utiliser une page de test, alors je ne mets pas tout mon code, et j'attends de savoir ce que c'est une page de test, que j'inclurai avec joie. J'ai aussi upgradé jQuery, comme tu me l'as dit, à la version 1.9.1.

Bon, s'il te plaît, sois mollo avec moi, j'ai beaucoup de difficulté, mais je suis prêt à prendre le temps de comprendre ce que tu as à me dire, si tu t'adaptes à mon niveau.
Salut,

Une page de test serait une page reprenant ton problème isolé, publiée sur le web et donc accessible à tous (genre : mondomaine.com/test.html) ! Smiley smile

Tu peux aussi te tourner vers des outils comme codepen.io ou jsfiddle.net qui te permettent de publier des bouts de code (html,css,js) avec jQuery et toussa... et surtout de les partager.

Par ailleurs, tu trouves maintenant dans tous les navigateurs des outils de développement.
Il y a aussi des extensions équivalentes comme firebug.
Parmi ces outils en figure un appelé "console". Incontournable si tu fais un peu de JavaScript...

tm
Finalement j'ai trouvé ce que je voulais

Voici pour ceux qui auraient le même problème :

<!DOCTYPE html>
<head>
	<script src="http://cdnjs.cloudflare.com/ajax/libs/headjs/0.99/head.min.js"></script>
	<script>
 		head.js("http://code.jquery.com/jquery-2.0.0.min.js",
			function(){
 
				$( function(){
 
					$("button", "#boutons").on("click", function(){
						$( "div[id^='ID']" ).hide();
<!--Cacher toutes les DIV qui contiennent ID-->
						$( "#ID" + $( this ).attr('id') ).show();
<!--Montrer la DIV qui s'appelle ID plus (le id du bouton)-->
					});
 				});
 			}
		);
	</script>

</head>


<body>
		<div id="boutons">
			<button id="111">111</button>
			<button id="112">112</button>
			<button id="113">113</button>
		</div>
		<div id="texte">
			<div id="ID111">
				<p>1.1.1</p>
			</div>
			<div id="ID112">
				<p>1.1.2</p>
			</div>
			<div id="ID113">
				<p>1.1.3</p>
			</div>
		</div>
 
	
</body>
</html>


Bonne journée! Smiley biggrin
Modifié par Zno (31 May 2013 - 18:50)