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

发布于 2025-01-03 06:30:05 字数 578 浏览 0 评论 0原文

我的 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。我希望有人能帮助我解决这个问题。

I need some help with my jQuery script.
I have a page that refreshes every 10 seconds and new divs from a feed are getting appended at.

My script counts the divs and removes the last div when there are more than 20 divs. This works fine if the feed just appends 1 div at a time. But the feed can also append multiply divs at the same time. When this happens the count can exceed the max of 20 divs. The problem with this is that my script just deletes 1 div and not all the divs that exceed the 20 count.

This is my code:

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

I need to remove all extra divs so there are always 20 divs. I hope someone can help me out with this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

Spring初心 2025-01-10 06:30:05

使用 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/

Use jQuery.slice to get everything past number 20, and bin them - dead easy :)

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

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

聊慰 2025-01-10 06:30:05
var $auto_refresh = setInterval(function () {
    var $articleCount = $('div').length; 

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

    $autoUpdate();
}, 10000);

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

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

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

    $autoUpdate();
}, 10000);

Notice the change of if to while. This keeps deleting the last one until there are 20.

请你别敷衍 2025-01-10 06:30:05

您可以使用 .slice(x) 删除索引 < 中的所有元素code>x 以及:http://jsfiddle.net/PLKAm/

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

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

You could use .slice(x) to remove all elements from index x and on: http://jsfiddle.net/PLKAm/.

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

If there are <= 20 items then .slice(20) returns an empty set, so the code is a no-op automatically.

阳光①夏 2025-01-10 06:30:05

使用 大于 选择器:

var $auto_refresh = setInterval(function () {

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

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

Using the greater than selector:

var $auto_refresh = setInterval(function () {

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

    $autoUpdate();
}, 10000); // refresh every 10000 milliseconds for new items
情归归情 2025-01-10 06:30:05
var $auto_refresh = setInterval(function () {

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

    $autoUpdate();
}, 10000); // refresh every 10000 milliseconds for new items
var $auto_refresh = setInterval(function () {

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

    $autoUpdate();
}, 10000); // refresh every 10000 milliseconds for new items
凉世弥音 2025-01-10 06:30:05
while ($articleCount > 20) {            
        $('div:last-child').remove();
        $articleCount = $('div').length;
    }
while ($articleCount > 20) {            
        $('div:last-child').remove();
        $articleCount = $('div').length;
    }
避讳 2025-01-10 06:30:05

您可以使用 :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);

You could use the :gt() selector to find the elements in one fell swoop.

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);
凤舞天涯 2025-01-10 06:30:05
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
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
温柔戏命师 2025-01-10 06:30:05

为简单起见编辑:

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

Edited for simplicity:

$('div').each(function(count){
    if(count >= 20){
        $(this).remove();
    }
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文