11548 sujets

JavaScript, DOM et API Web HTML5

bonjour,

je suis à la réalisation d'un menu déroulant. je souhaiterai un délai d'une seconde sur le hover pour que l'effet show se réalise.
Mon code actuel est celui ci
<script type="text/javascript">


	$(".menulien").mouseover(function() {
    $(this).find("ul").show('');
	});
	$(".menulien").mouseout(function() {
	$(this).find('ul').hide('');
	});
</script>

merci pour votre aide
Bonjour,

en intercalant un appel à la fonction delay avant ton show, cela devrait donner le résultat voulu.

note: la fonction delay ne peut pas être annulé, donc si tu veux annuler l'affichage quand tu quitte le survol, il faut passer par un timer et les fonctions setTimeout et clearTimeout (une page d'explication).
il me semble que la solution suivante ne fonctionne pas
$(".menulien").mouseover(function() {

    $(this).find("ul").delay(3000).show('');

	});



je pense trouver ma solution ici jquery dotimeout
http://benalman.com/projects/jquery-dotimeout-plugin/
http://benalman.com/code/projects/jquery-dotimeout/examples/hoverintent/

$(".menulien").mouseover(function() {
    $(this).doTimeout('mouseover',3000,function() {
	$(this).find("ul").show(200);
	});


je pense être sur la bonne voie mais il me faut encore annuler le dotimeout au survol dun autre lien