如果单击菜单本身或身体中的任何位置,我已经构建了一个使用slideUp事件的下拉菜单:
$('html, .currentPage').click(function() {
$('.currentMenu').slideUp('fast', function() { myFunction(); });
});
我在slideUp事件回调中也有一个函数。
但是,我的问题是在html或.currentPage上调用该函数,单击是否发生了slideUp事件。
我怎样才能使它成为函数();如果slideUp事件运行,仅会发生?
答案 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)
您可以在菜单中添加课程open
,slideUp()
添加hasClass('open')
:
if ( $menu.hasClass('open') ) {
$menu.slideUp('fast', function(){ });
...
}