事件结束前单击功能触发功能

时间:2012-03-02 00:06:15

标签: javascript jquery

如果单击菜单本身或身体中的任何位置,我已经构建了一个使用slideUp事件的下拉菜单:

$('html, .currentPage').click(function() { 
    $('.currentMenu').slideUp('fast', function() { myFunction(); });
});

我在slideUp事件回调中也有一个函数。

但是,我的问题是在html或.currentPage上调用该函数,单击是否发生了slideUp事件。

我怎样才能使它成为函数();如果slideUp事件运行,会发生?

3 个答案:

答案 0 :(得分:1)

$('.currentMenu').slideToggle('fast', function() { myFunction(); });

答案 1 :(得分:1)

$('html, .currentPage').click(function() { 
    var $currentMenu = $('.currentMenu');

    if($currentMenu.is(':visible')) { 
        $currentMenu.slideUp('fast', function() { myFunction(); });
    }
});

更多

$('html, .currentPage').click(function() { 
    var $currentMenu = $('.currentMenu');

    if($currentMenu.is(':visible')) { 
        $currentMenu.slideUp('fast', myFunction);
    }
});

您还可以选择使用$currentMenu.css('display') != 'none'代替$currentMenu.is(':visible')

根据slideUp()的实际行为建议选项,http://api.jquery.com/slideUp/的官方文档中对此进行了描述。

答案 2 :(得分:0)

您可以在菜单中添加课程openslideUp()添加hasClass('open')

if ( $menu.hasClass('open') ) {
    $menu.slideUp('fast', function(){ });
    ...
}