使用jQuery封装翻页器

<div class="pagination"></div>
(function($) {
  $.fn.pagination = function(options) {
    const defaults = {
      current: 1, // 当前页码
      total: 10, // 总页数
      visiblePages: 5, // 可见页码数量
      onPageClick: function(page) {} // 点击页码的回调函数
    };
    const settings = $.extend({}, defaults, options);
    const $pagination = this;
    const halfVisible = Math.floor(settings.visiblePages / 2);
    let start = Math.max(1, settings.current - halfVisible);
    let end = Math.min(settings.total, start + settings.visiblePages - 1);
    start = Math.max(1, end - settings.visiblePages + 1);
    const pages = [];
    for (let i = start; i <= end; i++) {
      pages.push(i);
    }
    const prevClass = settings.current === 1 ? 'disabled' : '';
    const nextClass = settings.current === settings.total ? 'disabled' : '';
    const html = `
      <ul class="pagination">
        <li class="page-item ${prevClass}">
          <a class="page-link" href="#" data-page="${settings.current - 1}">上一页</a>
        </li>
        ${pages.map(function(page) {
          const activeClass = page === settings.current ? 'active' : '';
          return `
            <li class="page-item ${activeClass}">
              <a class="page-link" href="#" data-page="${page}">${page}</a>
            </li>
          `;
        }).join('')}
        <li class="page-item ${nextClass}">
          <a class="page-link" href="#" data-page="${settings.current + 1}">下一页</a>
        </li>
      </ul>
    `;
    $pagination.html(html);
    $pagination.on('click', 'a', function(event) {
      event.preventDefault();
      const page = parseInt($(this).data('page'));
      if (page >= 1 && page <= settings.total && page !== settings.current) {
        settings.current = page;
        $pagination.pagination(settings);
        settings.onPageClick(page);
      }
    });
    return $pagination;
  };
})(jQuery);

该代码通过 jQuery 的插件机制,将翻页器封装为一个 jQuery 插件。该插件接收一个对象作为参数,用于配置翻页器的各种属性,包括当前页码、总页数、可见页码数量和点击页码的回调函数。在插件内部,首先通过 Math.maxMath.min 方法计算出可见的页码范围,然后使用 map 方法将页码转换为 HTML。最后,将 HTML 插入到翻页器容器中,并使用事件委托为页码绑定点击事件。当点击页码时,插件会更新当前页码,重新绘制翻页器,并调用回调函数通知外部代码页码已经变化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zwq8023520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值