$(xml).find('issue').each(function(){
может стать: (используя .slice () )
var startIndex = 0; //edit this via your ui
var howMany = 10;
var $issues = $(xml).find('issue');
var $issuesPaginated = $issues.slice( startIndex , ($issues.length - startIndex) + howMany );
$issuesPaginated.each(function(){
Используете ли вы что-нибудь на стороне сервера? Не могли бы вы упростить разбиение на страницы таким образом, чтобы не загружать все эти данные в DOM?
для запрашиваемой помощи по обработчикам кликов:
$(document).ready(function() {
$.ajax({
type: "GET",
url: "issues.xml",
dataType: "xml",
success: function(xml) {
var startIndex = 0; // gets edited via ui
var howMany = 10; // constant of how many per page, but you could make this a ui changeable thing too
var $issues = $(xml).find('issue'); //the resulting issues from the xml
var totalIssues = $issues.length;
var displayIssues = function() { // display the issues
var $issuesPaginated = $issues.slice( startIndex , ($issues.length - startIndex) + howMany );
$('#shelf-items').html(''); // clear old issues
$issuesPaginated.each(function(){
var id = $(this).attr('id');
var date = $(this).find('date').text();
var cover = $(this).find('cover').text();
var issue = $(this).find('issuenumber').text();
var url = $(this).find('url').text();
$('<li id="'+id+'"></li>').html('<a href="'+url+'"><img src="images/covers/'+cover+'" alt="" /></a><br />'+date+' - #'+issue+'').appendTo('#shelf-items');
});
}
$('#prevIssueButton').click(function() {
if( startIndex < howMany) {
startIndex -= howMany;
displayIssues();
}else {
alert('No more previous issues'); // probably want to do something more elegant here, like start over at 0, etc..
}
});
$('#nextIssueButton').click(function() {
if( startIndex + howMany >= totalIssues) {
startIndex += howMany;
displayIssues();
}else {
alert('No more next issues'); // probably want to do something more elegant here, like start over at 0, etc..
}
});
displayIssues(); // display for the first time (ajax call);
}
}); // end ajax call
}); // end document-ready