Разбиение на страницы jQuery отображает более одного элемента

#javascript #jquery #plugins #jquery-plugins #jquery-pagination

#javascript #jquery #Плагины #jquery-плагины #jquery-разбивка на страницы

Вопрос:

Я пытаюсь использовать плагин разбиения на страницы для разбиения на страницы результатов поиска некоторых элементов. К сожалению, демонстрации и документация не очень понятны, когда дело доходит до отображения более одного результата. По крайней мере, я так чувствовал…

Итак, в любом случае, кажется, что мне нужно написать свой собственный пропуск и использовать код внутри функции обратного вызова, чтобы получить нужный мне результат. Вот что у меня получилось на данный момент:

 function setupPagination(num_items) {
    var num_entries = $('#hiddenItemsContainer div.indexItem').length;
    // Create pagination element
    $("#paginationWidget").pagination(num_entries, {
        current_page: 0,
        items_per_page: num_items,
        num_display_entries: 5,
        next_text: 'Next',
        prev_text: 'Prev',
        callback: pageselectCallback,
        num_edge_entries: 1
    }); 
}

function pageselectCallback(page_index, jq){
    var num_entries = $('#hiddenItemsContainer div.indexItem').length;
    var items_per_page = $('#ItemsPerPage').val();
    var newcontent = ($('#hiddenItemsContainer div.indexItem').slice(Math.min((page_index 1) * items_per_page), items_per_page)).clone();
    console.log(newcontent);

    // Replace old content with new content
    $('#itemsContainer').empty().html(newcontent);

    return false;
}
  

Я продолжаю получать пустой массив в качестве значения newContent . Значит, что-то не так в том, как я использую slice функцию.

Есть мысли?

Обновить:

Проблема решена. Я, наконец, понял это! Вот решение:

 function pageselectCallback(page_index, jq){
    console.log(page_index);
    var num_entries = $('#hiddenItemsContainer div.indexItem').length;
    var items_per_page = $('#ItemsPerPage').val();
    var newcontent = ($('#hiddenItemsContainer div.indexItem').slice(Math.min(page_index * items_per_page), ((page_index   1) * items_per_page))).clone();
    console.log(newcontent);

    // Replace old content with new content
    $('#itemsContainer').html(newcontent);

    return false;
}
  

Но еще одна вещь… Есть ли способ передать items_per_page значение функции обратного вызова? Не имеет смысла сохранять его в скрытом поле только для того, чтобы я мог получить к нему доступ…

Комментарии:

1. Что вы подразумеваете под отображением более одного элемента? Под этим я понимаю количество элементов на странице, но в этом плагине уже есть эта опция, и вы ее используете… Можете ли вы привести пример в скрипте?

2. @Andre: Проблема в том, что плагин использует эту опцию внутри для отображения только виджета разбиения на страницы. На самом деле это не использует это как количество элементов, фактически отображаемых в результирующем div.

3. Да, это так. Вы можете увидеть, как это работает в официальной демонстрации: d-scribe.de/webtools/jquery-pagination/demo/demo_options.htm .

4. @Andre: Нет, посмотри на исходный код. Вы увидите, что автор извлекает количество элементов, которые будут отображаться, из значения текстового поля.