我有一個用戶可以通過單擊「添加」按鈕添加的項目列表。它在列表頂部添加了一個新的div,該列表向下滑動(JQuery的$()。slideDown();)。問題是,如果用戶點擊添加按鈕的速度太快,幻燈片停止並且永遠不會結束。單擊onclick時JQuery slideDowns停止太快
下面是我正在做的一個簡短的例子:http://jsfiddle.net/2RqmU/44/點擊「點擊這裏」真的很快。
如何確保動畫不會停止,或者至少在動畫完成之前禁用onclick?
我有一個用戶可以通過單擊「添加」按鈕添加的項目列表。它在列表頂部添加了一個新的div,該列表向下滑動(JQuery的$()。slideDown();)。問題是,如果用戶點擊添加按鈕的速度太快,幻燈片停止並且永遠不會結束。單擊onclick時JQuery slideDowns停止太快
下面是我正在做的一個簡短的例子:http://jsfiddle.net/2RqmU/44/點擊「點擊這裏」真的很快。
如何確保動畫不會停止,或者至少在動畫完成之前禁用onclick?
你改變每次點擊目標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 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」)前置到$(「#content」)。append – 2012-03-27 10:22:08
乾淨又幹淨! 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;
}
你就不能改了slideDown延遲爲100ms?使用你的JSFiddle:http://jsfiddle.net/2RqmU/46/ – mattytommo 2012-03-27 10:16:32