jQuery分页-如何适应不同的格式

jQuery分页-如何适应不同的格式,jquery,pagination,Jquery,Pagination,我决定在上使用教程,主要是因为我不需要DataTable的所有功能,也不想花太多时间来尝试按照我想要的方式设计它 我对本教程的问题是分页。我不想让它看起来像这样: 1 2 [3] 4 5 相反,我希望它看起来像 < [#] > [#]将是一个输入字段,用户可以在其中输入一个数字,它将自动转到该页面。两侧的箭头将根据其所在页面和页面数量禁用和启用。例如,如果它在第1页,那么按钮的样式将为类“on” 我附上了一张我可能希望它看起来如何的截图: (图像不可用) 我有点困惑于如何通过

我决定在上使用教程,主要是因为我不需要DataTable的所有功能,也不想花太多时间来尝试按照我想要的方式设计它

我对本教程的问题是分页。我不想让它看起来像这样:

1 2 [3] 4 5
相反,我希望它看起来像

< [#] >
<[#]>
[#]将是一个输入字段,用户可以在其中输入一个数字,它将自动转到该页面。两侧的箭头将根据其所在页面和页面数量禁用和启用。例如,如果它在第1页,那么<按钮将有一个“off”类。如果有超过1个页面,那么>按钮的样式将为类“on”

我附上了一张我可能希望它看起来如何的截图:

(图像不可用)

我有点困惑于如何通过以下代码实现这一点:

$(document).ready(function() {
$('table.paginated').each(function() {
var currentPage = 0;
var numPerPage = 10;

var $table = $(this);

$table.bind('repaginate', function() {
  $table.find('tbody tr').show()
    .lt(currentPage * numPerPage)
      .hide()
    .end()
    .gt((currentPage + 1) * numPerPage - 1)
      .hide()
    .end();
});

var numRows = $table.find('tbody tr').length;
var numPages = Math.ceil(numRows / numPerPage);

var $pager = $('<div class="pager"></div>');
for (var page = 0; page < numPages; page++) {
  $('<span class="page-number">' + (page + 1) + '</span>')
   .bind('click', {'newPage': page}, function(event) {
     currentPage = event.data['newPage'];
     $table.trigger('repaginate');
     $(this).addClass('active').siblings().removeClass('active');
   })
   .appendTo($pager).addClass('clickable');
}
$pager.find('span.page-number:first').addClass('active');
$pager.insertBefore($table);

$table.trigger('repaginate'); }); });
$(文档).ready(函数(){
$('table.paginated')。每个(函数(){
var-currentPage=0;
var numPerPage=10;
var$表=$(此);
$table.bind('repaginate',function(){
$table.find('tbody tr').show()
.lt(当前页*numPerPage)
.hide()
(完)
.gt((当前页+1)*numPerPage-1)
.hide()
.end();
});
var numRows=$table.find('tbody tr').length;
var numPages=Math.ceil(numRows/numPerPage);
变量$pager=$('');
对于(变量页面=0;页面<代码> > p>我会考虑这样的分页。

<div class="pager">
  <span class="clickable left-arrow"></span>
  <input type="text" name="pagerbox" value="1" />
  <span class="clickable right-arrow"></span>
</div>

这是我的解决办法

// This function will disabled or enabled the right arrows, depending
// on the currentPage value.
var checkPagerArrows() = function() {   
  $leftArrow.removeClass('disabled');       
  if(currentPage == 0){ $leftArrow.addClass('disabled'); }   
  $rightArrow.removeClass('disabled');   
  if(currentPage == (numPages - 1){ $rightArrow.addClass('disabled'); } 
};

// This functions moves to a specified page. Handles validation.
var goToPage = function(pageNumber){
  var pageTo = parseInt(pageNumber);
  // Makes sure pageTo is a number and is in a valid page range
  if(isNaN(pageTo ) || pageTo < 0 || pageTo > (numPages - 1)){
    // Enter your code for error messages, or custom control
    return;
  }
  currentPage = pageTo;
  checkPagerArrows();
  $table.trigger('repaginate');
};

var $pager = $('<div class="pager"></div>');

// Create the left arrow.
var $leftArrow = $('<span class="clickable left-arrow"></span>')
  // Add the click functionality.
  .click(function(){ goToPage(currentPage - 1); })
  // Append to pager.
  .appendTo($pager);

// Create the input box.
var $pagerBox = $('<input type="text" name="pagerbox" value="1" />')
  // Add functionality
  .change(function(){
    var pageVal = parseInt($(this).attr('value'));
    if(isNaN(pageVal)){ return; }
    goToPage(pageVal - 1); // Make it zero based.
  })
  .appendTo($pager);

var $rightArrow = $('<span class="clickable right-arrow"></span>')
  .click(function(){ goToPage(currentPage + 1); })
  .appendTo($pager);

$pager.insertBefore($table);
//此功能将禁用或启用右箭头,具体取决于
//在当前页面的值上。
var checkPagerRows()=函数(){
$leftArrow.removeClass('disabled');
如果(currentPage==0){$leftArrow.addClass('disabled');}
$rightArrow.removeClass('disabled');
如果(currentPage==(numPages-1){$rightArrow.addClass('disabled');}
};
//此函数移动到指定页。处理验证。
var goToPage=函数(页码){
var pageTo=parseInt(页码);
//确保pageTo是一个数字并且在有效的页面范围内
如果(isNaN(pageTo)| pageTo<0 | | pageTo>(numPages-1)){
//输入错误消息或自定义控件的代码
返回;
}
currentPage=pageTo;
checkPagerRows();
$table.trigger('repaginate');
};
变量$pager=$('');
//创建左箭头。
变量$leftArrow=$('')
//添加单击功能。
。单击(函数(){goToPage(currentPage-1);})
//附加到寻呼机。
.appendTo($pager);
//创建输入框。
变量$pagerBox=$('')
//添加功能
.change(函数(){
var pageVal=parseInt($(this.attr('value'));
if(isNaN(pageVal)){return;}
goToPage(pageVal-1);//使其以零为基础。
})
.appendTo($pager);
变量$rightArrow=$('')
。单击(函数(){goToPage(currentPage+1);})
.appendTo($pager);
$pager.insertBefore($table);

记住:对用户输入进行验证。

天哪!你真是一个梦想!非常感谢你,这真是太有魅力了!@michael,很抱歉劫持它,但我有一个问题。在你的设置中,如果(例如)单击演示版面,你是否有一个详细页面?我在从详细页面返回结果页面时遇到问题。有什么提示吗?图像丢失。