【问题标题】:How to execute the next click only when previous click finish?仅在上一次单击完成时如何执行下一次单击?
【发布时间】:2013-05-05 15:40:29
【问题描述】:

我的 HTML:

<div>
    <p>Testing Paragraph</p>
    <span>Testing Span</span>
    <div class="content">This is the main content of this div</div>
</div>

我的 jQuery:

$('p').click(function () {
    $(this).parent().find('.content').slideToggle('slow');
});

小提琴:http://jsfiddle.net/Vs5DX/

从演示中可以看出,点击段落时内容会上下滑动。问题是,如果我非常快速地多次单击该段落,那么它会不断地上下移动而不单击。

我试过了:

$(this).parent().find('.content').stop(true).slideToggle('slow'); 

但当动画停止播放时,情况会更糟。有什么想法吗?

【问题讨论】:

    标签: javascript jquery slidetoggle continuous


    【解决方案1】:

    您可以使用:not 排除当前的:animated 元素:

    $('p').click(function () {
        $(this).parent().find('.content:not(:animated)').slideToggle('slow');
    }); 
    

    Updated Fiddle

    【讨论】:

      【解决方案2】:

      从变量开始:

      varClicked = false;
      

      在 slideDown 上使其为真,仅当它为真时才允许 slideUp,在 SlideUp 上,再次使其为假

      【讨论】:

        猜你喜欢
        • 2018-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-17
        • 2021-11-02
        • 1970-01-01
        • 1970-01-01
        • 2011-10-02
        相关资源
        最近更新 更多