jQuery Pagination Display больше, чем один элемент - PullRequest
1 голос
/ 17 мая 2011

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

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

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.

Есть мысли?

UPDATE

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

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 в функцию обратного вызова? Нет смысла сохранять его в скрытом поле, чтобы получить к нему доступ ...

...