Je crée un diaporama personnalisé pour un projet écrit avec jQuery. Chaque diaporama a 4 événements liés à lui (jouer, arrêter, suivant, prev). Les contrôles apparaissent au survol de la souris et au passage du curseur. Au passage de la souris, je veux un retard dans les contrôles qui disparaissent. Pour y parvenir, j'ai utilisé setTimeout.setTimeout pas retardé avec une fonction anonyme
$(this).attr('timeout', setTimeout((function(obj){obj.fadeOut(250);})($(this)), 1000));
C'est cependant à l'origine un « appel setTimeout inutile (manque des guillemets autour de l'argument?) » Erreur
J'ai enlevé le ($(this))
pour voir si je pouvais simplifier les choses.
$(this).attr('timeout', setTimeout((function(foo){alert(foo);})('bar'), 1000));
Cela a provoqué « bar » à afficher dans la boîte de message d'alerte sur mouseout sans délai, ou les erreurs signalées dans Firebug. Je ne peux que supposer par cette logique que la fonction anonyme est exécutée tout de suite, ce qui ne laisse rien à l'appel de setTimeout plus tard.
Si j'ignorer la nécessité de passer $ (cela) dans la fonction anonyme et essayer
$(this).attr('timeout', setTimeout(function(){alert('foo');}, 1000));
tout fonctionne comme prévu, je dois faire quelque chose de mal avec la syntaxe de la fonction anonyme, mais je suis à partir d'idées sur ce que cela pourrait être.
Merci