.hover()有两个处理,当你的鼠标进入第一个被执行,二是当你的鼠标离开执行。由于这个原因,只需将.hover()与.click()交换将不起作用,因为.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"});
});
Try it out here.
此外,这是很难说的w/o的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);
});
Try it out here.
其实,为什么不使用.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);
});
Try it out here.
你试过用 '点击'(2号线) – Guidhouse
@Guidhouse一词替换 '悬停' - 这是行不通的,。点击()只需要一个处理程序,.hover ()需要两个 - 请参阅我的答案。 –