Рассмотрим следующий макет страницы:
<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();
}
});
Попробуй это:
$("#scroller").children().not("#id1 #id2 ...").each(function(){//Your code});
Мое быстрое предположение заключается в том, что ваш последний for-loop удаляет все страницы до lastPageToKeep, сохраняя только последние страницы. Вы должны начинать с lastPageToKeep + 1 до максимального количества страниц.
Тем не менее я бы рекомендовал вам :lt
и :gt
селекторов от jQuery!
Я сделал быструю скрипку для вас, демонстрируя использование: http://jsfiddle.net/d6tZ6/
Примечание. В качестве побочного эффекта также будет устранена необходимость получения идентификатора для каждой страницы.
page_7
, это может быть проблемой, вы не можете сказать, не видя больше, но, тем не менее, это конфликт идентификаторов