带有切换动画的 jQuery 框打开/关闭功能

标签 jquery

我有这个 jquery 函数。我需要一个切换功能来打开和关闭 div 框。但同时我需要它用动画关闭所有打开的 div 框,然后打开您单击的那个。

JS:

function showAndHidediv(id) {
$("#" + id).slideToggle();
}

HTML:

<a onclick="showAndHidediv('test');">Open 1</a>    
<a onclick="showAndHidediv('test2');">Open 2</a>    
<a onclick="showAndHidediv('test3');">Open 3</a>

<div id="test" class="accordionBox">Test 1</div>
<div id="test2" class="accordionBox">Test 2</div>
<div id="test3" class="accordionBox">Test 3</div>

CSS:

.accordionBox {
    width: 100%!important;
    display: none;
    height: 100px;
    overflow: hidden;
    background-color: #119df2;
}

JS fiddle :

JS fiddle here

最佳答案

您应该避免在 html 中使用 onclick 和其他内联属性。 您的问题的解决方案:

<a href="#" data-tab-id="test1" class="open-box">Open 1</a>
<a href="#" data-tab-id="test2" class="open-box">Open 2</a>
<a href="#" data-tab-id="test3" class="open-box">Open 3</a>

<div id="test1" class="accordionBox">Test 1</div>
<div id="test2" class="accordionBox">Test 2</div>
<div id="test3" class="accordionBox">Test 3</div>

还有 JS:

$('.open-box').click(function() {

    var box =  $('#' + $(this).attr('data-tab-id'));

    if(box.is(":visible")){
        box.toggle(500);
        return;
    }

    var visibleBoxes = $('.accordionBox:visible')
    if (visibleBoxes.length > 0) {
        $('.accordionBox:visible').toggle(500);

    }

    box.toggle(500);
});

JS fiddle :https://jsfiddle.net/0zextx9t/7/

关于带有切换动画的 jQuery 框打开/关闭功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33084266/

相关文章:

javascript - 如何在 jQuery 中使用 CSS 'background-image' 属性添加图像绑定(bind)点击事件

javascript - 按钮单击背景图像更大的动画并加载新页面

javascript - 如何将无序列表分成两部分?

javascript - 如何优化我的 javascript slider 加载?

javascript - Stripe AJAX PHP 和 JavaScript

javascript - 将 Dropzone file.fullPath 发送到 Rails Controller

jquery - Foundation Zurb 动态显示模态框

java - 设置服务器时区以从日期中添加/减去时间

javascript - 如何使用 JavaScript 或 jQuery 克隆 HTML 元素的样式对象?

javascript - 检查哪个复选框被选中