Удалить все, кроме некоторых элементов в JQuery

0

Рассмотрим следующий макет страницы:

<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
    у вас есть 2 идентификатора page_7 , это может быть проблемой, вы не можете сказать, не видя больше, но, тем не менее, это конфликт идентификаторов
  • 0
    Проблема копирования / вставки. Это исправлю.
Теги:

3 ответа

0
Лучший ответ

Попробуйте этот код:

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

http://jsfiddle.net/6NCmR/

  • 0
    К сожалению, это тоже удаляет все, кроме текущей страницы
  • 0
    Для меня это работает идеально
Показать ещё 9 комментариев
0

Попробуй это:

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

Мое быстрое предположение заключается в том, что ваш последний for-loop удаляет все страницы до lastPageToKeep, сохраняя только последние страницы. Вы должны начинать с lastPageToKeep + 1 до максимального количества страниц.

Тем не менее я бы рекомендовал вам :lt и :gt селекторов от jQuery!

Я сделал быструю скрипку для вас, демонстрируя использование: http://jsfiddle.net/d6tZ6/


Примечание. В качестве побочного эффекта также будет устранена необходимость получения идентификатора для каждой страницы.

  • 0
    Спасибо, я сейчас попробую :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню