如何防止slideToggle在第一次点击时打开然后关闭

Posted

技术标签:

【中文标题】如何防止slideToggle在第一次点击时打开然后关闭【英文标题】:How to prevent slideToggle opening then closing on first click 【发布时间】:2019-10-04 16:30:34 【问题描述】:

我有一个slideToggle,它给了我一个手风琴式的功能。这一切都很好,除了第一次单击它会短暂显示内容 div,但随后会立即将其滑动关闭。再次单击幻灯片会正确打开,并且所有后续单击都正常运行。

这是我正在使用的 Jquery 脚本:

$(".tm-section-label").click(function() 
     $(this).parent().addClass('active').find('.tm-extra-product-options-container').slideToggle('fast,easing'); 
       );~
    $(".tm-section-label").click(function() 
 $(".tm-section-label").not(this).parent().removeClass('active').find('.tm-extra-product-options-container').slideUp('fast');
);

这是我正在使用的 CSS:

.prodTabs div.cpf_hide_element 
    display: none;
    margin-bottom: 0;


.prodTabs.active > div.tm-extra-product-options-container 
    visibility: visible;
    height: auto;
    opacity: 1;


.prodTabs.active div.cpf_hide_element 
    display: block;

如何使初始点击只需滑动打开 div 而无需点击两次?

【问题讨论】:

可以分享html代码吗 看起来不错,一定很微妙。 【参考方案1】:

https://dotnetfiddle.net/hpJDeF

@
    Layout = null;

<!DOCTYPE html>
<html>
<head>
    <style type="text/css">
        .prodTabs div.cpf_hide_element 
            display: none;
            margin-bottom: 0;
        

        .prodTabs.active > div.tm-extra-product-options-container 
            visibility: visible;
            height: auto;
            opacity: 1;
        

        .prodTabs.active div.cpf_hide_element 
            display: block;
        
    </style>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
    </script>
    <!-- Script to illustrates slideToggle() method -->
    <script>
        $(document).ready(function () 
            $(".tm-section-label").click(function () 
                $(this).parent().addClass('active');
                var q = $(this).parent().find('.tm-extra-product-options-container');
                if (q.hasClass('cpf_hide_element')) 

                    q.removeClass('cpf_hide_element');
                
                else 
                    q.slideToggle('fast,easing');
                    q.removeClass('cpf_hide_element');
                
            );
            $(".tm-section-label").click(function () 
                $(".tm-section-label").not(this).parent().removeClass('active').find('.tm-extra-product-options-container').slideUp('fast');
            );
        );
    </script>
</head>
<body>
    <div class="prodTabs" id="parent">
        <div class="tm-extra-product-options-container cpf_hide_element" id="theContent">The content..</div>
        <div class="tm-section-label">Click Me</div>
    </div>
</body>
</html>

【讨论】:

以上是关于如何防止slideToggle在第一次点击时打开然后关闭的主要内容,如果未能解决你的问题,请参考以下文章

slideToggle 后如何测试 DIV 是打开还是关闭

多次单击 JQuery slideToggle() - 防止动画

滑动切换 |一次只打开一个 div

如何使屏幕跟随 Slidetoggle

当超链接行为由例如虚拟创建时,如何防止打开新选项卡或窗口? HTML 按钮的“点击”事件处理?

将 slideToggle() 添加到函数中