我的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。我希望有人可以帮我解决这个问题。
答案 0 :(得分:6)
使用jQuery.slice获取超过20的所有内容,然后将它们删除 - 简单易用:)
var $auto_refresh = setInterval(function () {
$('div').slice(20).remove();
$autoUpdate();
}, 10000); // refresh every 10000 milliseconds for new items
答案 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)
删除索引x
和http://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