Problème de compréhension d'un code

Par Devdeb22, il y a 7 ans


Bonjour,

En réalité mon code n'a pas problème il fonctionne.
C'est un code que j'ai trouvé sur le net.

Mais mon seul soucis c'est que je n'arrive pas à le comprendre et donc à l'expliquer

Ce que j'ai compris c'est que à la première ligne de ce code, je séléctionne les ancres qui ont un attribut qui contient # (et donc les ancres qui cible un id) mais que cet attribut ne soit pas seulement un #

En regardant sur internet j'ai pas trop compris la suite.

Que fait exactement le reste du code, j'ai compris intuitivement qu'il s'agit d'une animation mais ça s'arrête là.

$('a[href*=#]:not([href=#])').click(function () { if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) { var target = $(this.hash); target = target.length ? target : $('[name=' + this.hash.slice(1) + ']'); if (target.length) { $('html,body').animate({ scrollTop: target.offset().top - 132 }, 2000); return false; } } });

Voici le code au complet :

<script type="text/javascript"> $(function () { var nb_valide = 0; var nb_invalide = 0; var nb_checkbox = $('input[type=checkbox]').length; $('input[type=checkbox]').click(function(){ if($(this).hasClass('valide')) { if (this.checked == true) { nb_valide ++; } else { nb_valide --; } } else if ($(this).hasClass('invalide')) { if (this.checked == true) { nb_invalide ++; } else { nb_invalide --; } } var percent_valide = (nb_valide*100) / (nb_invalide + nb_valide) var percent_invalide = (nb_invalide*100) / (nb_invalide+nb_valide) $('#nb_valide').text(nb_valide + ' soit ' + Math.round(percent_valide) + ' %'); $('#nb_invalide').text(nb_invalide + ' soit ' + Math.round(percent_invalide) + ' %'); }) $('#submit_qcm').click(function(e){ e.preventDefault(); }) $('a[href*=#]:not([href=#])').click(function () { if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) { var target = $(this.hash); target = target.length ? target : $('[name=' + this.hash.slice(1) + ']'); if (target.length) { $('html,body').animate({ scrollTop: target.offset().top - 132 }, 2000); return false; } } }); }); </script>

Aucune réponse