簡體   English   中英

刪除jQuery中除某些元素外的所有元素

[英]Remove all except some elements in 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();
}

這確實會刪除當前頁面以外的所有頁面。 我相信我已經設定了刪除哪些頁面和不刪除哪些頁面的限制。 為什么要刪除除當前頁面以外的所有內容?

試試這個代碼:

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

http://jsfiddle.net/6NCmR/

嘗試這個:

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

我的快速猜測是,您的最后一個for循環將刪除直到lastPageToKeep的所有頁面,僅保留最后一頁。 您應該從lastPageToKeep + 1開始迭代直到最大頁面數。

盡管如此,我還是建議您使用jQuery的:lt:gt選擇器!

我為您演示了用法,為您進行了快速提琴制作: http : //jsfiddle.net/d6tZ6/


注意:作為副作用,這還將消除為每個頁面設置ID的必要性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM