我有这个功能,除了点击之外,每个div都会淡出。目前它们都在同一时间淡出,但我希望它们一次淡出一个。
我也希望这些div以随机顺序淡出,所以对于能告诉我如何的人来说,这些额外的分数是多少!
$(".grid-item").click(function () {
var selected = this;
$('.grid > div').not(selected).each(function(i) {
$(this).fadeTo(200, 0, function(){
$(this).css("visibility", "hidden");
});
});
});
答案 0 :(得分:0)
这是您可以使用的逻辑:link
$(document).ready(function () {
$(".grid-item").click(function () {
var selected = this;
var queue = $.Deferred().resolve(); // create an empty queue
$('.grid > div').not(selected).get().forEach(function (div) {
queue = queue.then(function () {
return $(div).fadeTo(200, 0).promise();
})
});
});
});
DEMO 奖金randomizing array:jsFiddle
答案 1 :(得分:0)
var selected;
var fader = function() {
$('.grid > div').not(selected).not(':hidden').first().fadeOut(200, fader);
};
$(".grid-item").click(function () {
selected = this;
fader();
});
对于随机性,请看:
http://blog.mastykarz.nl/jquery-random-filter/
请给我奖励积分。
答案 2 :(得分:0)
这有点冗长,但我喜欢它,因为它使用递归函数来随机化渐变的延迟:
var doms = [];
var randos = [];
var index = 0;
$(".grid-item").click(function () {
var selected = $(this);
doms = $('.grid > div').not(selected);
var num = Math.floor(Math.random() * doms.length);
for (var i = 0; i < doms.length; i++)
{
while (randos.indexOf(num) > -1)
{
num = Math.floor(Math.random() * doms.length);
}
randos.push(num);
}
fadeout();
})
window.fadeout = function () {
if (doms.length > 0) {
var random = $(doms.get(randos[index]));
$(random).delay(200 * index).fadeTo(200, 0, function () {
$(random).css("visibility", "hidden");
});
doms = doms.not(random);
index++;
fadeout();
}
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="grid">
<div class="grid-item">hello</div>
<div class="grid-item">how</div>
<div class="grid-item">are</div>
<div class="grid-item">you</div>
<div class="grid-item">today</div>
</div>
&#13;