【问题标题】:JQuery slideDowns stop when an onclick is clicked too fast当点击过快时,JQuery slideDowns 停止
【发布时间】:2012-03-27 10:10:39
【问题描述】:

我有一个用户可以通过单击“添加”按钮添加到的项目列表。它在列表顶部添加了一个新的 div,它向下滑动(JQuery 的 $().slideDown();)。问题是,如果用户点击添加按钮的速度过快,幻灯片就会停止并且永远不会结束。

这是我正在做的一个简短示例:http://jsfiddle.net/2RqmU/44/ 点击“点击这里”非常快。

如何确保动画不会停止,或者至少在动画完成之前禁用 onclick?

【问题讨论】:

标签: jquery onclick slidedown


【解决方案1】:

您每次点击都会更改目标div 的全部内容。相反,您可以只附加/前置单个元素。这解决了你的动画问题:

var id = 0;

//click
$("#clickme").click(function() {
    //Add a new div on top in content
    var pre = "<div id='foo" + id + "' class='dynamicdiv'>hello " + id + "</div>";
    $("#content").prepend(pre);

    //Slide it down and update ID
    $("#foo" + id).slideDown(300);
    id++;
});​

查看更新后的fiddle

【讨论】:

  • 谢谢你是我的英雄——我知道我在做什么感觉很奇怪。
  • 解释出了什么问题。 var pre = $("#content").html(); 在那个准确的 - 半动画 - 时刻抓取您的内容的快照。然后您将其作为新内容重新插入,将其冻结到位。
【解决方案2】:

只是一点点改变,但会奏效

var id = 0;

$("#clickme").click(function() {
    //Add a new div on top in content
    $("#content").prepend("<div id='foo" + id + "' class='dynamicdiv'>hello " + id + "</div>");

    //Slide it down and update ID
    $("#foo" + id).slideDown(300);
    id++;
});​

【讨论】:

  • 如果你想让它们按顺序排列,只需将 $("#content").prepend 更改为 $("#content").append
【解决方案3】:

又好又干净! http://jsfiddle.net/2RqmU/59/

最终版本:

HTML

<div id="clickme">CLICK HERE</div>
<div id="content">            
</div>

JavaScript

var id = 0;

//click
$("#clickme").click(function() {
    //Add a new div on top in content
    $('<div/>')
        .attr({
            "id" : "foo" + id                
        })
        .addClass("dynamicdiv")
        .html("Hello " + id)
        .prependTo('#content')
        .slideDown(300);

    id++;
});

CSS

div#clickme {
    background-color: #5e1d1d;
    color: #FFFFFF;
    font-family: verdana;
    font-size: 18px;
}

.dynamicdiv {
    background-color: #5c8591;
    border-bottom: 1px solid #FFFFFF;
    display: none;
    font-family: verdana;
    font-size: 18px;
}

【讨论】:

  • 哦,很好,很干净!我昨天刚开始使用 JQuery,所以我还在学习这一切。知道你可以轻松地格式化它真的很有帮助
猜你喜欢
  • 1970-01-01
  • 2014-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-26
  • 2021-09-04
  • 1970-01-01
相关资源
最近更新 更多