除了jQuery中的一些元素之外的所有元素

时间:2014-01-21 22:34:26

标签: javascript jquery

考虑以下页面布局:

<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();
}

这会删除除当前页面之外的每个页面。我相信我已经设置了应该删除哪些页面的限制,哪些页面没有。除了当前页面之外,为什么删除了所有内容?

3 个答案:

答案 0 :(得分:0)

试试这段代码:

$('.pagina').each(function(i, page) {
    if ((i < pageNr - 3) || (i > pageNr + 1)) {
        $(page).remove();
    }
});

http://jsfiddle.net/6NCmR/

答案 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的必要性。