Bonjour,
Voila je rencontre un petit problème avec mon code.
Décrivez ici votre code ou ce que vous cherchez à faire
$(document).ready(function() {
$('[data-toggle="tooltip"]').tooltip('show');
$(window).scroll(function() {
var hT = ($('.ADD-LIST').offset().top)-77,
hH = $('.ADD-LIST').outerHeight(),
wH = $(window).height(),
wS = $(this).scrollTop();
if (wS > (hT+hH-wH) && (hT > wS) && (wS+wH > hT+hH)){
setTimeout(function(){$('[data-toggle="tooltip"]').tooltip('hide'); }, 5000);
}
else{
clearTimeout(setTimeout(function(){$('[data-toggle="tooltip"]').tooltip('hide'); }, 5000));
$('[data-toggle="tooltip"]').tooltip('show');
}
});
});
je cherche comment faire un clear pour settimout car j'ai testé toute sorte de code mais sans aucun resultat, mon timer ne se réinitialise pas avec le ClearTimeout.
le code affiche une tooltip et la faire disparaitre dans 5s.
Le but c'est de réinitialiser un mon setTimeout quand le scroll dépasse mon element (ADD-LIST)
Décrivez ici vos erreurs ou ce que vous obtenez à la place de ce que vous attendez :(
Bonjour,
setTImout
retourne un unique id. C'est cet id que tu dois donner à clearTimeout
. https://developer.mozilla.org/ro/docs/Web/API/window.setTimeout
je l'ai mis dans le code mais ça marche pas :
clearTimeout(setTimeout(function(){$('[data-toggle="tooltip"]').tooltip('hide'); }, 5000));
j'ai même mis le setTimeout dans une variable et je l'ai passé au clearTimeout, sans resultat....
pk faire un clearTimeout ????????
le setTimeOut n'appel q'une seule fois la fonction
@pluche
Pierre
parce que quand le scroll dépasse mon element et il revient vers lui et bien il doit compter depuis 0 les 5s, ce qui n'est pas le cas, car il compte parfois 2s, 3s..
j'espère être claire
merci
@Pierre je t'ai répondu :
parce que quand le scroll dépasse mon element et il revient vers lui et bien il doit compter depuis 0 les 5s, ce qui n'est pas le cas, car il compte parfois 2s, 3s et il fait disparaitre l'element (il faut toujours qu'il le cache dans 5s)
j'espère être claire
merci
"j'ai même mis le setTimeout dans une variable et je l'ai passé au clearTimeout, sans resultat...."
Tu l'avais déclaré à quel niveau ta variable ?
Je n'ai pas tout compris aux explications, mais qu'est ce que ça donne si tu fais ça :
$(document).ready(function() {
$('[data-toggle="tooltip"]').tooltip('show');
var timeoutInstance;
$(window).scroll(function() {
var $addList = $('.ADD-LIST'),
hT = ($addList.offset().top)-77,
hH = $addList.outerHeight(),
wH = $(window).height(),
wS = $(this).scrollTop();
if (wS > (hT+hH-wH) && (hT > wS) && (wS+wH > hT+hH)){
timeoutInstance = setTimeout(function(){$('[data-toggle="tooltip"]').tooltip('hide'); }, 5000);
} else{
clearTimeout(timeoutInstance);
$('[data-toggle="tooltip"]').tooltip('show');
}
});
});
rien, même resultat quand je depasse mon element au scroll, et je reviens vers lui, normalement la tooltip doit apparaitre et disparaitre dans 5s, mais là elle apparait et diparait trop vite (1s ou 2s)
Pour éliminer le fait que "tooltip" ne ferait pas ce qu'il est sensé faire, as-tu tester de bien mettre des "console.log" aux endroits stratégiques afin de savoir si ton code à toi est correcte et s'éxecute bien au moment où il est sensé s'éxecuter ?
Sinon, fais-nous un jsfiddle d'exemple, ça ira plus vite ainsi pour t'aider.
Edit, il serait intéressant, par soucis d'optimisation, de mettre "$('[data-toggle="tooltip"]')" dans une variable, histoire de ne pas faire la recherche de l'élément à chaque fois.
oui j'ai bien mis des console.log, enfait j'ai fait plusieurs tests, plusieurs essais ...