Fonction qui s'accumule et plante le script final

Par leknoppix, il y a 7 ans


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

Pierrot01, il y a 7 ans

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