.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 ()需要兩個 - 請參閱我的答案。 –