考虑以下页面布局:
<div id="page-container" class="">
<div id="scroller">
<!-- This page should be removed -->
<div id="page_1" class="pagina"></div>
<!-- These pages should be kept -->
<div id="page_2" class="pagina"></div>
<div id="page_3" class="pagina"></div>
<!-- This is the current page -->
<div id="page_4" class="pagina"></div>
<!-- These pages should be kept -->
<div id="page_5" class="pagina"></div>
<div id="page_6" class="pagina"></div>
<!-- These pages AND everything that follows should be removed -->
<div id="page_7" class="pagina"></div>
<div id="page_8" class="pagina"></div>
</div>
</div>
我有一个函数loadPage(pageNr),它加载一个特定页面并将其滚动到视图中。
我还有一个功能,可以在当前页面的顶部或下方加载两个页面,具体取决于滚动方向。
我现在想要实现的是,当我的loadPage()函数被调用时,我希望在当前页面之下和之前保留2页。应删除所有其他页面。这是出于速度目的,因为我的应用总共有748页。
我尝试过:
//Determine which pages on top of current page should be kept
var firstPageToKeep = (pageNr - 2);
//Delete every page on top that should not be kept in memory
for(x=0;x<firstPageToKeep;x++) {
console.log('x: '+x);
$('#page_'+x).remove();
}
//=================================
//Determine which pages below current page should be kept
var lastPageToKeep = (pageNr + 2);
//Delete every page below current page that should not be kept in memory
for(y=0;y<lastPageToKeep;y++) {
$('#page_'+y).remove();
}
这会删除除当前页面之外的每个页面。我相信我已经设置了应该删除哪些页面的限制,哪些页面没有。除了当前页面之外,为什么删除了所有内容?
答案 0 :(得分:0)
试试这段代码:
$('.pagina').each(function(i, page) {
if ((i < pageNr - 3) || (i > pageNr + 1)) {
$(page).remove();
}
});
答案 1 :(得分:0)
试试这个:
$("#scroller").children().not("#id1 #id2 ...").each(function(){//Your code});
答案 2 :(得分:0)
我的快速猜测是,你的最后一个for循环删除所有页面直到lastPageToKeep,只保留最后一页。您应该从lastPageToKeep + 1开始迭代到最大页数。
尽管如此,我建议您使用jQuery中的:lt
和:gt
选择器!
我为你展示了这个用法做了一个快速的小提琴: http://jsfiddle.net/d6tZ6/
注意:作为副作用,这也将消除每个页面都有ID的必要性。