seo-pagination.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. $(function () {
  2. var SEOPagination = {
  3. data: {
  4. pageNum: 1, // 当前页码
  5. pageTotal: 1, // 总共多少页面
  6. },
  7. el: '.seo-pagination',
  8. $el: '',
  9. init: function () {
  10. this.initVars()
  11. this.addJumpDOM()
  12. this.initData()
  13. this.initEvents()
  14. },
  15. initVars: function () {
  16. this.$el = $(this.el)
  17. },
  18. initData: function () {
  19. var pager = this.$el.find('.el-pager')
  20. this.data.pageNum = pager.attr('data-page-num') - 0
  21. this.data.pageTotal = pager.attr('data-page-total') - 0
  22. },
  23. initEvents: function () {
  24. // quicknext事件
  25. $('.seo-pagination .prev-more, .seo-pagination .next-more').on('mouseover', function () {
  26. var $this = $(this)
  27. if ($this.hasClass('prev-more')) {
  28. $this.find('.el-icon').removeClass().addClass('el-icon el-icon-d-arrow-left')
  29. } else {
  30. $this.find('.el-icon').removeClass().addClass('el-icon el-icon-d-arrow-right')
  31. }
  32. }).on('mouseleave', function () {
  33. var $this = $(this)
  34. $this.find('.el-icon').removeClass().addClass('el-icon el-icon-more')
  35. })
  36. this.jumpDOMEvents()
  37. },
  38. addJumpDOM: function () {
  39. var jumpDOM = '<span class="el-pagination__jump">跳到<div class="el-input el-pagination__editor is-in-pagination"><input type="number" autocomplete="off" min="1" max="70" class="el-input__inner"></div>页<span class="el-pagination__confirm">确定</span></span>'
  40. this.$el.find('.el-pager').after(jumpDOM)
  41. },
  42. jumpDOMEvents: function () {
  43. var _this = this
  44. this.$el.find('.el-input__inner').on('keydown', function (e) {
  45. // 回车事件
  46. if (e.keyCode === 13) {
  47. _this.doPageChange()
  48. }
  49. })
  50. this.$el.find('.el-pagination__confirm').on('click', function (e) {
  51. _this.doPageChange()
  52. })
  53. },
  54. // 获取jump输入框内数组
  55. getJumpNum: function () {
  56. return this.$el.find('.el-input__inner').val() - 0
  57. },
  58. doPageChange: function () {
  59. // 计算页码
  60. var nextPageNum = this.getJumpNum()
  61. var pageTotal = this.data.pageTotal
  62. var pageNum = this.data.pageNum
  63. if (nextPageNum <= 0) {
  64. nextPageNum = 1
  65. } else if (nextPageNum === pageNum) {
  66. // 不做任何操作
  67. return
  68. } else if (nextPageNum > pageTotal) {
  69. nextPageNum = pageTotal
  70. }
  71. this.onPageChange(nextPageNum)
  72. },
  73. onPageChange: function (p) {
  74. console.log(p)
  75. try {
  76. onSEOPaginationChange && onSEOPaginationChange(p)
  77. } catch (error) {
  78. console.warn(error)
  79. }
  80. }
  81. }
  82. SEOPagination.init()
  83. })