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

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


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

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

我该怎么做呢function();仅当slideUp事件运行时才会发生?

最佳答案

$('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/的官方文档中所述。

关于javascript - 事件结束前的点击功能触发功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9526170/

10-11 23:51