如何使用jquery随机删除同一类的元素

时间:2013-03-09 09:22:23

标签: javascript jquery html css dom

我有大约72个班级="框"

这些是覆盖我整个页面的一些黑色的盒子,我希望在完成我的功能之后逐个删除这些分区。

我正在做的是随机删除这些盒子,

function removeBoxes(){

    var erase;
            //var to store the length of array of divisions
    var total = $(".box").length;
    while(total > 0)
    {
              //generating a random number
        erase = Math.floor(Math.random() * total);
        $(".box").eq(erase).fadeOut(10000, function(){
            $(this).remove();
        });
        total = $(".box").length;
    }
}

稍后我还会在两次删除之间添加一些时间延迟,但是现在我只想知道如何逐个删除这些框。

3 个答案:

答案 0 :(得分:5)

一个小插件怎么样:

(function($) {
    $.fn.random = function() {
        var n = this.length;
        var r = Math.floor(n * Math.random());
        return n ? $(this[r]) : $();
    };
})(jQuery);

用法:

(function iterate() {
    $('.box').random().fadeOut(1000, function() {
        $(this).remove();
        iterate();
    });
})();

元素将一次消失一个,当没有.box个元素时,循环将自动终止。

请参阅http://jsfiddle.net/alnitak/cddhL/了解演示。

答案 1 :(得分:0)

function removeBoxes(){

    var total = $(".box").length - 1;
    var randomnumber = Math.floor(Math.random()*total);
    jQuery(".box:eq('"+randomnumer+"')").fadeOut(1000, function() {
        $(this).remove();
    });
}

//这是每5秒删除一次DIV

setInterval(function(){ 
    removeBoxes();    
}, 5000);

我希望这可以帮助:)

答案 2 :(得分:0)

你已经知道如何在淡出后触发某些东西,即在你已经删除了盒子的回调中进行操作。而不是使用循环,编写一个只删除一个随机框的函数,并在回调中调用它。

示例:

function removeRandomBox() {
  var boxes = $(".box"); // don't repeatedly search for the boxes
  var total = boxes.length;
  if (length > 0) {
    var erase = Math.floor(Math.random() * total);
    boxes.eq(erase).fadeOut(10000, function(){
       $(this).remove();
       removeRandomBox();
    });
  }
}