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