jqueryif语句-它可以先执行(或者必须在事件之后执行)吗?
我正在努力让它工作。我正在创建一系列可点击的按钮,用于下拉菜单。我希望它能按如下方式工作:jqueryif语句-它可以先执行(或者必须在事件之后执行)吗?,jquery,if-statement,jquery-animate,Jquery,If Statement,Jquery Animate,我正在努力让它工作。我正在创建一系列可点击的按钮,用于下拉菜单。我希望它能按如下方式工作: 如果下拉菜单全部隐藏-设置高度动画 如果任何一个下拉菜单可见-显示/隐藏以在菜单之间切换 在两种情况下,当一个新下拉菜单的动画相同时,我可以做得很好。然而,这不是我想要的样子。我真的很想“切换”的显示/隐藏时,已经打开和动画的高度时,第一次打开(以及一旦关闭备份)。由于我可能会更进一步,在初始打开和关闭时启用向下/向上拖动,并在打开下拉菜单后向左/向右滑动以在下拉菜单之间切换,这是需要为每个场景分别设置动
//sideUI drop down
if( $('#sideUIContainer').is(':hidden') && $('#sideUISearchContainer').is(':hidden') && $('#sideUIActionContainer').is(':hidden') ){
$('#navNavigate').click(function(){
$('#sideUIContainer').show();
$('#sideUIContainer, #sideUISearchContainer, #sideUIActionContainer').animate({'height':'504px'});
$('#navNavigate').addClass('active');
}
$('#navSearch').click(function(){
$('#sideUISearchContainer').show();
$('#sideUIContainer, #sideUISearchContainer, #sideUIActionContainer').animate({'height':'504px'});
$('#navSearch').addClass('active');
}
$('#navAction').click(function(){
$('#sideUIActionContainer').show();
$('#sideUIContainer, #sideUISearchContainer, #sideUIActionContainer').animate({'height':'504px'});
$('#navAction').addClass('active');
}
};
// toggle drop down when UI open - menu
if($('#sideUIContainer').is(':visible')){
$('#navNavigate').click(function(){
$('#sideUIContainer, #sideUISearchContainer, #sideUIActionContainer').animate({'height':'0'}, function(){
$('#sideUIContainer').hide();
$('#navNavigate').removeClass('active');
});
}
$('#navSearch').click(function(){
$('#sideUIContainer').hide();
$('#navNavigate').removeClass('active');
$('#sideUISearchContainer').show();
$('#navSearch').addClass('active');
});
$('#navAction').click(function(){
$('#sideUIContainer').hide();
$('#navNavigate').removeClass('active');
$('#sideUIActionContainer').show();
$('#navAction').addClass('active');
});
};
// toggle drop down when UI open - search
if($('#sideUISearchContainer').is(':visible')){
$('#navNavigate').click(function(){
$('#sideUISearchContainer').hide();
$('#navSearch').removeClass('active');
$('#sideUINavigateContainer').show();
$('#navNavigate').addClass('active');
});
$('#navSearch').click(function(){
$('#sideUIContainer, #sideUISearchContainer, #sideUIActionContainer').animate({'height':'0'}, function(){
$('#sideUISearchContainer').hide();
$('#navSearch').removeClass('active');
});
}
$('#navAction').click(function(){
$('#sideUISearchContainer').hide();
$('#navSearch').removeClass('active');
$('#sideUIActionContainer').show();
$('#navAction').addClass('active');
});
};
// toggle drop down when UI open - action
if($('#sideUIActionContainer').is(':visible')){
$('#navNavigate').click(function(){
$('#sideUIActionContainer').hide();
$('#navAction').removeClass('active');
$('#sideUINavigateContainer').show();
$('#navNavigate').addClass('active');
});
$('#navSearch').click(function(){
$('#sideUIActionContainer').hide();
$('#navSearch').removeClass('active');
$('#sideUISearchContainer').show();
$('#navSearch').addClass('active');
});
$('#navAction').click(function(){
$('#sideUIContainer, #sideUISearchContainer, #sideUIActionContainer').animate({'height':'0'}, function(){
$('#sideUIActionContainer').hide();
$('#navAction').removeClass('active');
});
}
};
请让我知道,如果我必须澄清上述。但希望我的fiddle和jQuery代码能帮助你们进一步理解我要做的事情
非常感谢您的任何帮助。谢谢 我不会按照你提议的方式做事。维护所有这些独立的事件处理程序将是一件痛苦的事情。相反,在nav和jQuery的
data
方法上使用数据属性来检索它。这将允许您以编程方式选择正确的侧栏,而无需单独的处理程序
在处理程序中,您将向活动导航项添加一个“活动”类。然后检查该类以确定用户遇到的三种可能性中的哪一种
foo
。但它应该足以让您从中获得一个有效、健壮的解决方案
您的标记没有内容?让我在每个标记中添加一些内容。所以你可以知道哪个菜单是哪个。很抱歉。但除此之外,内容在这里并不重要。。。为了方便这个下拉功能,我们刚刚在那里做了简单的标记。谢谢!那太完美了。我得好好研究一下,看看会发生什么。我的jQuery知识非常简单,所以我的方法有时不是最有效的。我真的很感谢你的帮助。
$('.nav').click( function() {
debugger;
var $this = $(this);
//current menu has been clicked again
if ($this.hasClass('active')) {
//however you want to handle this. I collapsed it again
var $foo = $('#' + $this.data('menu'));
$foo.animate( {width:0}, 500);
$this.removeClass('active');
return;
}
//another menu is already active
var $active = $('.nav.active');
if ($active.length) {
//toggle current clicked item
var thismenu = $this.data('menu');
var activemenu = $active.data('menu');
var $thismenu = $('#' + thismenu);
var $activemenu = $('#' + activemenu);
//hide the old active menu and remove active class from nav
$activemenu.css( {width:0} );
$active.removeClass('active');
//show the new menu and add active class to nav
$thismenu.css( {width:300} );
$this.addClass('active');
return;
}
//no menu is active - animate menu in
var $menu = $('#' + $this.data('menu'));
$menu.animate( {width:300}, 500);
$this.addClass('active');
});