[英]jQuery.fadeOut() - How to apply sequentially to a set of elements?
我有n個按鈕
我需要
$('BUTTON').fadeOut();
...但我想一次看到一個按鈕消失..
如何 ?
我嘗試使用next,但是通過以下方式所有內容在一瞬間消失
$(".genresButton").first().fadeOut().next().fadeOut() ;
我嘗試使用fadeOut來淡出下一個,但是我對按鈕總數沒有什么了解。
我嘗試使用$ .each()但沒有成功
編輯:
這是我選擇的工作解決方案:
$("body").on('click', '.genresButton', function(event) {
$(".genresButton").not($(this)).each(function(index){
$(this).delay(index * 500).fadeOut(450);
});
});
您可以為此使用delay
:
$('BUTTON').each(function(index) {
$(this).delay(index * 500).fadeOut(450);
});
這樣可以安排每個按鈕以450ms的間隔在450ms內逐漸消失。
當您使用任何效果方法時, delay
都非常有用。 如果您需要使用不屬於效果套件的內容(例如hide
),則必須執行自己的setTimeout
:
$('BUTTON').each(function(index) {
var btn = $(this);
setTimeout(function() {
btn.hide();
}, index * 500);
});
真正的基本示例,您可以鏈接回調函數:
$("#button1").fadeOut(1000, function(){
$("#button2").fadeOut(1000, function(){
$("#button3").fadeOut();
});
});
廣義級聯避免了必須提前安排所有事情,並且可以說是更干凈的:
function seqFadeOut(jq, i) {
jq.eq(i).fadeOut(function() {
seqFadeOut(jq, i+1);
});
}
seqFadeOut($(".genresButton"), 0);//start the cascade
這實際上是@AlexOsborn的方法,但是適用於任何大小的集合。
稍加思考,您甚至可以引入一種機制來中止級聯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.