我在互联网上找到了这个jQuery下拉菜单,而我遇到的问题是,当你将鼠标悬停在ul.menu项目上时,所有后续的ul.sub-菜单显示,而不仅仅是直接跟随的ul.menu。当你将鼠标悬停在ul.sub-menu li项目上时,它的ul.sub-menu正常向上和向下折叠。这是我的代码:
$(function() {
$("#nav-primary ul.menu ul").css({ display: 'none' });
$("#nav-primary ul.menu li").hover(function() {
$(this).find('a').next('ul.sub-menu')
.stop(true, true).delay(50).animate({ "height": "show", "opacity": "show" }, 200 );
}, function(){
$(this).find('a').next('ul.sub-menu')
.stop(true, true).delay(50).animate({ "height": "hide", "opacity": "hide" }, 200 );
});
});
答案 0 :(得分:0)
你可以试试这个:
$j.fn.setNav = function(){
$j('#main-menu li ul').css({display: 'none'});
$j('#main-menu li').each(function()
{
var $jsublist = $j(this).find('ul:first');
$j(this).hover(function()
{
$jsublist.css({opacity: 1});
$jsublist.stop().css({overflow:'hidden', height:'auto', display:'none'}).fadeIn(200, function()
{
$j(this).css({overflow:'visible', height:'auto', display: 'block'});
});
},
function()
{
$jsublist.stop().css({overflow:'hidden', height:'auto', display:'none'}).fadeOut(200, function()
{
$j(this).css({overflow:'hidden', display:'none'});
});
});
});
$j('#main-menu li').each(function()
{
$j(this).hover(function()
{
$j(this).find('a:first').addClass('hover');
},
function()
{
$j(this).find('a:first').removeClass('hover');
});
});
// Populate dropdown with menu items
$j("#nav-primary li").each(function() {
var current_item = $j(this).hasClass('current-menu-item');
var el = $j(this).children('a');
var menu_text = el.text();
if($j(this).parent('ul.sub-menu').length > 0)
{
menu_text = "- "+menu_text;
}
if($j(this).parent('ul.sub-menu').parent('li').parent('ul.sub-menu').length > 0)
{
menu_text = el.text();
menu_text = "- - "+menu_text;
}
if(current_item)
{
$j("<option />", {
"selected": "selected",
"value" : el.attr("href"),
"text" : menu_text
}).appendTo("#nav-primary select");
}
else
{
$j("<option />", {
"value" : el.attr("href"),
"text" : menu_text
}).appendTo("#nav-primary select");
}
});
});