jQuery Drop菜单点击不hover

我正在尝试使用这个下拉菜单来处理点击而不是hover,但我似乎无法让它工作。 任何人的想法?

// Drop Menu $(".navigation ul ul, .shoppingbasket ul ul").css({display: "none"}); $(".navigation ul li, .shoppingbasket ul li").hover(function(){ $(this).find('ul:first').css({visibility: "visible",display: "none"}).slideDown(400); },function(){ $(this).find('ul:first').css({visibility: "hidden"}); }); 

.hover()需要两个处理程序,第一个在鼠标进入时执行,第二个在鼠标离开时执行。 因此,简单地使用.click()交换.hover()将无法工作,因为.click()只需要一个在您单击时执行的处理程序。 但是, .toggle()可用于绑定多个处理程序,以便在备用点击时执行。

 $(".navigation ul ul, .shoppingbasket ul ul").css({display: "none"}); $(".navigation ul li, .shoppingbasket ul li").toggle(function(){ $(this).find('ul:first').css({visibility: "visible",display: "none"}).slideDown(400); },function(){ $(this).find('ul:first').css({visibility: "hidden"}); }); 

在这里尝试一下。

此外,很难分辨HTML,但.slideDown()会使元素可见,您可能想要使用.slideUp() 。 所以你可能想尝试这样的事情:

 $(".navigation ul ul, .shoppingbasket ul ul").css({display: "none"}); $(".navigation ul li, .shoppingbasket ul li").toggle(function(){ $(this).find('ul:first').slideDown(400); },function(){ $(this).find('ul:first').slideUp(400); }); 

在这里尝试一下。

事实上,为什么不使用.slideToggle() ,这会使事情更紧凑,并允许你使用.click()

 $(".navigation ul ul, .shoppingbasket ul ul").css({display: "none"}); $(".navigation ul li, .shoppingbasket ul li").click(function(){ $(this).find('ul:first').slideToggle(400); }); 

在这里尝试一下。