2013-04-23 76 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

相关问题