2013-04-23 79 views
1

下面的代碼我似乎沒有工作。刪除一個類,然後用jquery隱藏它

$("ul li a").live("click", function() { 
     $(".myMegaMenuDiv").addClass('hideit').delay(300).removeClass('hideit'); 
}); 

我有一個大型的菜單,所以當你將鼠標懸停在一個菜單項,它顯示了一個div「.myMegaMenuDiv」。但是,當我點擊該div中的鏈接時,我希望它不會失去作用,因爲它目前沒有。我希望上面的代碼能夠解決這個問題。

「hideit」,增加了「顯示:無」的值

它工作時,我只是有「addClass」,但是當我添加「延遲」和「removeClass」將停止工作。

編輯:另外...以後我隱藏「.myMegaMenuDiv」當我懸停在導航菜單項的菜單沒有顯示,所以它種需要刪除類太

+0

你想隱藏它,然後經過300毫秒再次顯示它? – cfs 2013-04-23 18:25:24

+2

'.delay'用於延遲jQuery動畫..它不適用於像addClass或removeClass這樣的函數。 – 2013-04-23 18:26:13

回答

7

如果您只想單擊隱藏div,則可以使用hide函數。此外,live函數已被棄用,因此最好使用on

$("ul li a").on("click", function() { 
    $(".myMegaMenuDiv").hide(); 
}); 

如果你想隱藏和顯示,你可以使用的setTimeout:

$("ul li a").on("click", function() { 
    $(".myMegaMenuDiv").hide(); 
    setTimeout(function() { 
     $(".myMegaMenuDiv").show(); 
    }, 300); 
}); 
+0

剛剛編輯我的帖子,以顯示他只隱藏的問題,感謝您的回覆 – AnthW 2013-04-23 18:28:15

+0

這setTimeout工作很好,非常感謝! – AnthW 2013-04-23 18:33:31

+0

@AnthW太棒了!樂意效勞!既然這個答案幫助你,你會介意接受它嗎?謝謝! – cfs 2013-04-23 18:42:31

5

.hide().show()方法can receive a number to determine their duration,因此可以轉而嘗試這個辦法:

$(".myMegaMenuDiv").hide(300).show(0); 

如果你不想要的動畫,你可以像這樣做,以及:

$('.myMegaMenuDiv').hide(0).delay(300).show(0) 
+1

這實際上是它的動畫,我不認爲這是他想要的。由於持續時間,節目似乎不起作用。它必須在回調中。 – 2013-04-23 18:32:25

+1

感謝您的回覆。我從上面的評論得到它的工作,推薦setTimeout – AnthW 2013-04-23 18:34:10

+0

好,只是爲了補充我的回答,我添加了另一種方式來做到這一點... – DarkAjax 2013-04-23 18:39:37

相關問題