1

我的以下代码似乎不起作用。

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

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

“hideit”添加了一个值“display:none”

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

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

4

3 回答 3

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);
});
于 2013-04-23T18:26:32.487 回答
5

.hide()and.show()方法可以接收一个数字来确定它们的持续时间,因此你可以试试这个:

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

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

$('.myMegaMenuDiv').hide(0).delay(300).show(0)
于 2013-04-23T18:26:29.387 回答
3

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

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

于 2013-04-23T18:26:33.603 回答