使用JQuery一次淡出div

时间:2015-06-15 10:15:52

标签: javascript jquery html delay fadeout

我有这个功能,除了点击之外,每个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");
    });
  });

});

3 个答案:

答案 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 arrayjsFiddle

答案 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;
&#13;
&#13;