如果超过20 |,删除旧的div jQuery的

时间:2012-02-08 15:12:01

标签: javascript jquery

我的jQuery脚本需要一些帮助。 我有一个页面每10秒刷新一次,并且来自Feed的新div将被附加到。

我的脚本对div进行计数,并在超过20个div时删除最后一个div。如果Feed一次只附加1个div,则此方法可以正常工作。但是Feed也可以同时附加多个div。当发生这种情况时,计数可以超过最多20个div。这个问题是我的脚本只删除1个div而不是所有超过20个数的div。

这是我的代码:

var $auto_refresh = setInterval(function () {
    var $articleCount = $('div').length; 

    if ($articleCount > 20) {
        $('div:last-child').remove();
    }

    $autoUpdate();
}, 10000); // refresh every 10000 milliseconds for new items

我需要删除所有额外的div,所以总共有20个div。我希望有人可以帮我解决这个问题。

9 个答案:

答案 0 :(得分:6)

使用jQuery.slice获取超过20的所有内容,然后将它们删除 - 简单易用:)

var $auto_refresh = setInterval(function () {
    $('div').slice(20).remove();
    $autoUpdate();
}, 10000); // refresh every 10000 milliseconds for new items

http://api.jquery.com/slice/

答案 1 :(得分:3)

var $auto_refresh = setInterval(function () {
    var $articleCount = $('div').length; 

    while ($articleCount > 20) {
        $('div:last-child').remove();
        $articleCount = $('div').length;
    }

    $autoUpdate();
}, 10000);

请注意if更改为while。这会一直删除最后一个,直到有20个。

答案 2 :(得分:2)

您可以使用.slice(x)删除索引xhttp://jsfiddle.net/PLKAm/上的所有元素。

$("div").slice(20).remove();

如果有<= 20个项目,则.slice(20)会返回一个空集,因此代码会自动为无操作。

答案 3 :(得分:1)

使用greater than选择器:

var $auto_refresh = setInterval(function () {

    $('div:gt(20)').remove();

    $autoUpdate();
}, 10000); // refresh every 10000 milliseconds for new items

答案 4 :(得分:0)

var $auto_refresh = setInterval(function () {

    while ($('div').length > 20) {
        $('div:last-child').remove();
    }

    $autoUpdate();
}, 10000); // refresh every 10000 milliseconds for new items

答案 5 :(得分:0)

while ($articleCount > 20) {            
        $('div:last-child').remove();
        $articleCount = $('div').length;
    }

答案 6 :(得分:0)

为简单而编辑:

$('div').each(function(count){
    if(count >= 20){
        $(this).remove();
    }
});

答案 7 :(得分:0)

您可以使用:gt()选择器一次性找到元素。

var $auto_refresh = setInterval(function () {
    var nToDelete = $('div').length - 20; // Calculate how many there are to delete...    
    if(nToDelete > 0) $('div:gt(" + nToDelete + ")').remove(); // and delete them.
    $autoUpdate();
}, 10000);

答案 8 :(得分:0)

var remove21 = function() {
    if ($('div').length > 20) {
        $('div:nth-child(21)').remove();
        remove21();
    }
}

var $auto_refresh = setInterval(function () {

    remove21();

    $autoUpdate();
}, 10000); // refresh every 10000 milliseconds for new items