删除一个类然后用jquery隐藏它

时间:2013-04-23 18:24:09

标签: jquery hide delay show addclass

以下代码似乎无法正常工作。

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

我有一个超级菜单,所以当你将鼠标悬停在一个菜单项上时,它会显示一个div“.myMegaMenuDiv”。但是,当我单击该div中的链接时,我希望它消失,因为它目前没有。我希望上面的代码可以解决这个问题。

“hideit”添加“display:none”值

当我只有“addClass”时,它可以工作,但是当我添加“delay”和“removeClass”时,它就会停止工作。

编辑:另外......在我隐藏“.myMegaMenuDiv”后,当我将鼠标悬停在导航菜单项上时菜单没有显示,所以它也需要删除该类

3 个答案:

答案 0 :(得分: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);
});

答案 1 :(得分:5)

.hide().show()方法can receive a number to determine their duration,因此您可以尝试这样做:

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

如果你不想要动画,你也可以这样做:

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

答案 2 :(得分:3)

delay不仅仅是一个简单的暂停计时器。它仅适用于动画队列中的项目。您需要使用setTimeout

http://api.jquery.com/delay/