多个下拉菜单滑动切换
Multiple dropdown menus slide toggle
本文关键字:下拉菜单 更新时间:2023-09-26
我有三个(或更多)下拉菜单,当点击"触发器"时会显示
代码是有效的,但我希望slideUp动画在另一个slideDown动画开始之前完成。
请注意,"下拉"元素绝对位于顶部:相对于"容器"100%,因此它们出现在"触发器"下
Codepen 上的代码
HTML
<div class="container">
<div class="drop-container">
<span class="trigger">Drop 1</span>
<div class="dropdown">
<p>First Dropdown</p>
</div>
</div>
<div class="drop-container">
<span class="trigger">Drop 2</span>
<div class="dropdown">
<p>Second dropdown</p>
</div>
</div>
<div class="drop-container">
<span class="trigger">Drop 3</span>
<div class="dropdown">
<p>Third dropdown</p>
</div>
</div>
</div>
jQuery
var $container = $('.drop-container'),
$trigger = $('.trigger');
$trigger.on('click',function(){
var $this = $(this).siblings('.dropdown');
$container.find('.dropdown').slideUp();
if($this.is(':visible')) {
$this.hide('fast');
}
else {
$this.slideDown();
}
});
您可以添加一个延迟
$this.delay(500).slideDown();
但正如评论中指出的那样,最好使用回调。
Codepen示例
有一种方法可以在不使用定时器的情况下实现这一点。您基本上可以向具有幻灯片的元素添加一个类,并使用jQuery幻灯片的"oncomplete"属性。用下面的代码替换您的javascript,它应该在这里起作用。
$container = $('.drop-container')
$trigger = $('.trigger')
$trigger.on('click',function(){
var $drop = $(this).siblings('.dropdown')
$down = $container.find('.down')
if($down.length > 0){
$down.slideUp(function() {
$(this).removeClass('down')
$drop.addClass('down')
$drop.slideDown()
})
}
else{
$drop.addClass('down')
$drop.slideDown()
}
})
相关文章:
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- angular的下拉菜单
- 创建带有和不带有JavaScript的Bootstrap下拉菜单
- 创建下拉菜单
- 下拉菜单在菜单按钮的边缘闪闪发光
- I'我设计了一个下拉菜单,onclick会出现,而on blur会消失
- 硒IDE下拉菜单
- 我的下拉菜单中的链接不起作用
- Bootstrap Dropdown selection是在*all*下拉菜单上设置选择
- 如何将JSON转换为HTML下拉菜单
- 悬停下拉菜单即使在鼠标移出后也保持活动状态
- 基于下拉菜单创建开关
- 动态填充两个下拉菜单
- 如何将CSS(特别是填充/边距)应用于select下拉菜单的选项或optgroup
- 基于其他下拉菜单选择隐藏/显示下拉菜单
- JavaScript下拉菜单-部件在Mac上消失
- 为什么引导程序下拉菜单只有在包含bootstrap-responsive.css时才起作用
- 从选择下拉菜单中获取数据
- Bootstrap下拉菜单不起作用
- 更改下拉菜单上的图像javascript/jquery