我已经看过很多关于这个的文章,但没有关于jQuery的文章,所以我在这里...我正在将http://javascript-array.com/scripts/jquery_simple_drop_down_menu/的脚本版本实现到现有的应用程序中;但是,如果没有添加alert('msg ...')作为$(document).ready()调用中的第一个方法,我就无法工作。
这似乎与加载时间无关......无论我等多久,菜单都不起作用。 setTimeout()也不起作用。然而,添加alert(),它就像一个魅力。我也可以通过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;
答案 0 :(得分:0)
尝试在此处添加分号:
$('#jsddm > li').bind('mouseover', jsddm_open);
$('#jsddm > li').bind('mouseout', jsddm_timer);
答案 1 :(得分:0)
已解决:此网站的放置主要由Ajax驱动;因此,DOM被视为“准备好”,尽管脚本仍在后台处理(即菜单仍在加载时)。
在菜单加载器完成后立即放置初始化函数。
// DOES NOT WORK
$(document).ready(function() {
loadMenus();
menuInit();
});
function loadMenus() {
// load menu script...
}
// WORKS
$(document).ready(function() {
loadMenus();
});
function loadMenus() {
// load menu script...
menuInit();
}
答案 2 :(得分:0)