我正在尝试为之前的Web开发人员创建的客户端编辑javascript菜单。我在Javascript上并不是那么棒。客户端要求我在ROLLOVER上展开菜单expandables而不是点击。所以,我改变了.click到.hover,这很有效。问题是,当您将鼠标从主标题移动到菜单的实际可扩展区域时,菜单会消失/消失。我觉得这与.mouseneter部分有关,但我不确定如何继续。想法?
function fadeMenu(el) {
var delayMenu = setTimeout(function () {
$(el).fadeOut(300);
$(el).prev('.dropdown-toggle').removeClass('dropdown-enabled').animate({
backgroundColor: 'transparent',
color: '#000000'
}, 300, function () {
$(this).css({
color: '',
backgroundColor: ''
});
});
}, 500);
el.data('delayMenu', delayMenu);
}
$(document).ready(function () {
$('a.dropdown-toggle').click(function () {
var menu = $(this).next('.dropdown-menu');
var link = $(this).parent('li');
var otherMenus = $('.dropdown-menu').not(menu);
var otherToggles = $('.dropdown-toggle').not($(this));
var toggle = $(this);
var toColor = '';
if ($(menu).is(":visible")) {
if ($(link).is(":hover")) {
toColor = '#ff7e00';
} else {
toColor = '#000000';
}
$(menu).fadeOut(300);
$(toggle).removeClass('dropdown- enabled').stop().animate({
backgroundColor: 'transparent',
color: toColor
}, 300, function () {
$(this).css({
color: '',
backgroundColor: ''
});
});
} else {
if ($(otherMenus).is(':visible')) {
$(otherMenus).fadeOut(300);
}
$(toggle).stop().animate({
backgroundColor: '#1f1f1f',
color: '#ffffff'
}, 300).addClass('dropdown-enabled');
$(menu).fadeIn(300);
$(otherToggles).stop().animate({
backgroundColor: 'transparent',
color: '#000000'
}, 300, function () {
$(otherToggles).css({
color: '',
backgroundColor: ''
});
});
}
return false;
});
$('.dropdown-menu').mouseenter(function () {
clearTimeout($(this).data('delayMenu'));
}).mouseleave(function () {
fadeMenu($(this));
});
$('.dropdown-toggle').mouseenter(function () {
clearTimeout($(this).next('.dropdown-menu').data('delayMenu'));
}).mouseleave(function () {
fadeMenu($(this).next('.dropdown-menu'));
});
});