Autor Zpráva
Jiří Podhájský
Profil *
Dobrý den,

s JS obecně začínám a snažím se postavit svoje jednoduché rolovací JS menu. Roluje se směrem dolu, nahora rolování není. Problémem je, že pokud rychle přejedu například po třech 3 položkách menu, JS nestíhá reagovat a zůstanou mi vyset otevřené všechny 3 rolety.

Můžete mi, prosím vás, někdo poradit, jak tento problém odstranit?
Děkuji mnohokrát za každou radu.

jQuery(document).ready(function(){

	jQuery("ul.menu li a").hover(function() { 
		
	jQuery(this).parent().find("ul.sub-menu").slideDown(200).show(); 

	jQuery(this).parent().hover(function() {
	}, function(){	
		jQuery(this).parent().find("ul.sub-menu").hide();
	});

});

});
josefadamcik
Profil
Jiří Podhájský:
Zkuste zastavit provádění animace pomocí stop() před voláním hide()

...
    jQuery(this).parent().hover(function() {
    }, function(){    
        jQuery(this).parent().find("ul.sub-menu").stop().hide();
    });

});
...
Jiří Podhájský
Profil *
To má za následenk to, že jakmile animaci rolování přerušením před jejím dokončení (odjedu myší na jiné tlačítko), tak při příštím najetí myší na přerušené tlačítko dojde k vykreslení rolování jenom do části, kde došlo k přerušení. Zkrátka se roleta nevykreslí již celá, dokud neobnovím stránku.
josefadamcik
Profil
Jiří Podhájský:
pravda, stop je potřeba zavolat s parametry: stop(true, true).
Původní problém to vyřešilo?
Jiří Podhájský
Profil *
[#4] josefadamcik:
S parametry to již bezproblémově funguje! Díky moc za radu.

Výsledný kód s drobnými úpravami:

jQuery(document).ready(function(){

	jQuery("ul.menu li a").hover(
		
		function() { 
		
			jQuery(this).parent().find("ul.sub-menu").slideDown(200).show(); 

		},
		function() {
			jQuery(this).parent().hover(
				function() {
				}, 
				function(){	
					jQuery(this).parent().find("ul.sub-menu").stop(true, true).hide();
				}
			);

		}
	);

});

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: