Bonjour,

Voila je rencontre un petit problème avec mon code. Je dispose d'une fonction qui réalise un calcul à chaque appel.

Ce que je fais

Au chargement de la page, cette fonction s'exécute. A chaque scroll ou redemensionnement de la page, cette dernière se réexécute et donc, plante le site et son exécution correcte. Pour le scroll, je pense être arrivé à réssoudre une partie du soucis, mais le hic, c'est que s'il y a trop de va et vient dans le scroll, le script est exécuté indéfiniment. Normal!
Voici mon code lié au scroll:

var isScroll = 0;
    $(window).scroll(function() {
        var scroll = $(window).scrollTop();
        if (scroll > 0 && isScroll == 0)
        {
            $(".menu").addClass("header_scrolled");
            isScroll = 1;
            navigatize();
        }
        if (scroll == 0 && isScroll == 1)
        {
            $(".menu").removeClass("header_scrolled");
            isScroll = 0;
            navigatize();
        }
    });

Ce que je veux

Je cherche un moyen d'annuler, l'exécution de la fonction précédente lorsque la fonction est à nouveau exécuté pour éviter l'exécution à la suite et de manière indéfiniment la même fonction.

Si vous avez des questions, je suis là.
Merci d'avance.

1 réponse


Salut,
on appelle ça de la réentrance ;)
un truc comme ça ;)

    var isScroll = 0;
    var present = 0;
    $(window).scroll(function() {
        present ++;
        if(present > 1){
            return;
        }
        var scroll = $(window).scrollTop();
        if (scroll > 0 && isScroll == 0)
        {
            $(".menu").addClass("header_scrolled");
            isScroll = 1;
            navigatize();
        }
        if (scroll == 0 && isScroll == 1)
        {
            $(".menu").removeClass("header_scrolled");
            isScroll = 0;
            navigatize();
        }
        present = 0;
    });

@plus
Pierre