J'ai vu beaucoup d'articles à ce sujet, mais aucun traitant de jQuery, alors je vais ... J'implémente une version d'un script de http://javascript-array.com/scripts/jquery_simple_drop_down_menu/ dans une application existante; Cependant, je ne peux pas le faire fonctionner sans ajouter d'alerte ('msg ...') comme première méthode dans l'appel $ (document) .ready().Application jQuery ne fonctionnera pas sans alerte()
Cela ne semble pas avoir à voir avec le temps de chargement ... peu importe combien de temps j'attends, le menu ne fonctionne pas. setTimeout() ne fonctionne pas non plus. Ajoutez alerte(), cependant, et cela fonctionne comme un charme. Je peux également exécuter correctement les liaisons via Firebug.
var timeout = 500;
var closetimer = 0;
var ddmenuitem = 0;
function jsddm_open()
{ jsddm_canceltimer();
jsddm_close();
ddmenuitem = $(this).find('ul').css('visibility', 'visible');}
function jsddm_close()
{ if(ddmenuitem) ddmenuitem.css('visibility', 'hidden');}
function jsddm_timer()
{ closetimer = window.setTimeout(jsddm_close, timeout);}
function jsddm_canceltimer()
{ if(closetimer)
{ window.clearTimeout(closetimer);
closetimer = null;}}
$(document).ready(function()
{ $('#jsddm > li').bind('mouseover', jsddm_open)
$('#jsddm > li').bind('mouseout', jsddm_timer)});
document.onclick = jsddm_close;
J'ai complètement oublié $ .live(). Cela fonctionne aussi (et est beaucoup plus propre)! –