我想制作一个简单的菜单,其中第一级菜单条目是li元素,第二级是具有自己的li元素的ul块。没有什么明亮的。 Css包含显示:对于所有子菜单都没有,我的(乐观的)想法只是在第一级条目触发mouseover时显示正确的ul元素,然后在子菜单(ul元素)上触发mouseout时隐藏它们。我有一些问题要了解发生了什么。在Firefox上,一切都很好,动作序列:进入第一级菜单 - 进入子菜单 - 从子菜单退出,表明正确的事件序列被触发:menuOn subMenuOn subMenuOff menuOff。我不明白为什么在IE中以相同的事件顺序subMenuOff在subMenuOn后突然触发:结果是子菜单立即消失。这就像这对夫妇(subMenuOn subMenuOff)在禁用子菜单的同时进行了trigegred。使用mouseover或mouseenter没有改变。使用悬停不会改变这种情况。对发生的事情有所了解?这是代码:Jquery menu:mouseover/mouseout moseenter/mouseleave craziness
$(document).ready(
function(){
enableMenu();
}
);
var flagOnSubMenu = false;
function enableMenu(){
$('li.menu').bind('mouseenter', menuOn);
$('li.menu').bind('mouseleave', menuOff);
$('ul.sottomenu').bind ('mouseenter', subMenuOn);
$('ul.sottomenu').bind ('mouseleave', subMenuOff);
}
function menuOn(){
scrivi('menuOn');
if (flagOnSubMenu){
scrivi('noAction');
return;
}
var subMenuId;
$('ul.sottomenu').hide();
subMenuId = $(this).find("ul").attr('id');
$('#' + subMenuId).show();
}
function menuOff(){
scrivi('menuOff<br>');
return;
}
function subMenuOn(){
scrivi('subMenuOn');
flagOnSubMenu = true;
}
function subMenuOff(){
scrivi('subMenuOff');
flagOnSubMenu = false;
$(this).hide();
}
function scrivi(arg){
$('#debug').html($('#debug').html() + ' ' + arg);
}
不确定。我也使用了悬停功能,应该在移动到子元素时解决问题。不工作。 – Daniel 2009-04-16 17:48:26