J'ai du code qui ajoute des événements mouseover et des événements mouseout à tous les balises 'a' sur une page. Je voudrais qu'il sorte que le mouseout commence une minuterie de 5 secondes après quoi il appelle une fonction. Cependant, si un nouvel événement mouseover se déclenche, il doit annuler tous les temporisateurs existants. Le code que j'utilise suit. Le setTimeout() fonctionne bien, mais il semble que le clearTimeout() ne référence pas le bon timeoutID, même si je l'ai déclaré globalement. Aucune suggestion?clearTimeout on Mouseover Événement ne pas effacer setTimeout de l'événement Mouseout
var timeoutID;
function addMouseoverEvent() {
$('a').each(function(index) {
$(this).mouseover(function() {
clearTimeout(timeoutID);
// do stuff
})
});
}
function addMouseoutEvent() {
$('a').each(function(index) {
$(this).mouseout(function() {
timeoutID = setTimeout(function() {
// do stuff
}, 5000);
})
});
}
$(window).load(function() {
addMouseoverEvent();
addMouseoutEvent();
});
Je devrais préciser qu'il ne devrait y avoir qu'une seule minuterie active. C'est pourquoi je voulais que ce soit global. Si un événement mouseover se produit, aucune minuterie ne doit rester. Et si un événement mouseout survient, un seul timer devrait être actif - celui déclenché par le dernier événement mouseout.
y at-il des images à l'intérieur de vos points d'ancrage ou.? –
Oui, il pourrait y avoir des images, on ne sait pas ce que seront les éléments hrome plugin qui va fonctionner sur chaque page visitée, donc le contenu des pages pourrait être quelque chose). – ggutenberg