Javascript 删除jQuery中除某些元素之外的所有元素

Javascript 删除jQuery中除某些元素之外的所有元素,javascript,jquery,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="pa

考虑以下页面布局:

<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()函数时,我希望在当前页面的下方和之前保留两个页面。应删除所有其他页面。这是为了提高速度,因为我的应用程序总共有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();
}
//确定应保留当前页面顶部的哪些页面
var FIRSTPAGETKEP=(第2页);
//删除顶部不应保留在内存中的每一页
对于(x=0;x请尝试以下代码:

$('.pagina').each(function(i, page) {
    if ((i < pageNr - 3) || (i > pageNr + 1)) {
        $(page).remove();
    }
});
$('.pagina')。每个(函数(i,第页){
如果((ipageNr+1)){
$(第页).remove();
}
});
试试这个:

$("#scroller").children().not("#id1 #id2 ...").each(function(){//Your code});

我的快速猜测是,您的last for循环将删除lastPageToKeep之前的所有页面,只保留最后的页面。您应该从lastPageToKeep+1开始迭代,直到最大页数

尽管如此,我还是向您推荐jQuery中的
:lt
:gt
选择器

我为你做了一个快速的小提琴,演示它的用法:



注意:作为一个副作用,这也将消除为每个页面设置ID的必要性。

您有2个
page_7
ID,这可能是一个问题,如果看不到更多,就无法判断,但这是一个ID冲突。lessCopy/paste问题不会解决。不幸的是,这也会删除除当前页面之外的所有内容,因此我设置了
pageNr=4
,然后执行了我的代码,得到了正确的结果:从2页到6页。但是你在我给你的链接中试过了吗?我想你的代码有其他问题吗?我明白了。谢谢澄清。你的代码似乎工作得很好。你试过点击我网站侧边栏中的链接吗?这应该也能运行你的代码。看起来就像这样你的代码很有效,我现在知道该去哪里找了。我将把这个答案标记为已接受!