exam_list.js 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. $(function () {
  2. $("img").lazyload();
  3. const globaldata = {
  4. active: 0,
  5. }
  6. let params = lxd.parseUrl(window.location.href).query,
  7. my_nav = $(".my-nav"), my_nav_lis = my_nav.find("li"), id = 0;
  8. Array.from(my_nav_lis).forEach((item, index) => {
  9. params["grade"] == $(item).data("id") ? id = index : '';
  10. })
  11. my_nav_lis.removeClass("active");
  12. $(my_nav_lis[id]).addClass("active");
  13. let grade = $(my_nav_lis[id]).data("id"), lock = false, currentPage = 3, totalPage = 3, type = $(my_nav_lis[id]);
  14. my_nav.click(function (e) {
  15. if (e.target.className == "my-nav") return false;
  16. let active = Array.prototype.slice.call($(this).find("li")).indexOf(e.target);
  17. if (active == globaldata.active) return false;
  18. $(".my-loading").html("数据加载中...").hide();
  19. globaldata.active = active;
  20. type = $(e.target);
  21. currentPage = type.data("currentPage") || 3;
  22. totalPage = type.data("totalPage") || 3;
  23. grade = type.data("id");
  24. lock = type.data("lock") || false;
  25. $(this).find(".active").removeClass("active");
  26. type.addClass("active");
  27. $(".ke>.active").removeClass("active");
  28. $($(".ke>.my-list")[active]).addClass("active");
  29. })
  30. // 加载数据
  31. // 显示区高度
  32. let ch = document.documentElement.clientHeight || document.body.clientHeight,
  33. // 加载的数据
  34. area = params["area"] || '';
  35. $(window).scroll(function () {
  36. if (lock) return false;
  37. // 滑动区高度
  38. let sh = document.documentElement.scrollHeight || document.body.scrollHeight;
  39. // 滑动位置
  40. let st = document.documentElement.scrollTop || document.body.scrollTop;
  41. let c = sh * 1 - ch * 1 - st * 1;
  42. if (c == 0 && currentPage <= totalPage) {
  43. lock = true;
  44. $(".my-loading").show();
  45. data({ currentPage, area, grade }).then(res => { totalPage = res.totalPage; currentPage++; type.data("totalPage", res.totalPage); type.data("currentPage", currentPage); lock = res.lock; $(".my-loading").hide(); })
  46. }
  47. if (c == 0 && currentPage > totalPage) {
  48. type.data("lock", true)
  49. $(".my-loading").html("已经没有可以加载的数据了").show();
  50. }
  51. })
  52. // 加载数据
  53. function data (data) {
  54. return new Promise(resolve => {
  55. $.ajax({
  56. url: "http://api.gaokaoapp.net/exampaper/h/",
  57. data: {
  58. ...data,
  59. pageSize: 10
  60. },
  61. type: "get",
  62. error: function (error) {
  63. $(".my-loading").html("已经没有可以加载的数据了")
  64. },
  65. success: function (res) {
  66. let { dataList, totalPage } = res.data;
  67. let father = document.createDocumentFragment();
  68. Array.from(dataList).forEach(
  69. item => {
  70. let str = `<a target="_blank" href="http://www.gaokaoapp.net/h_exam/${item.id}.html" class="list-item">
  71. <div class="item-img">
  72. <img data-original="${item.thumbnail}"
  73. src="../imgs/app.png"
  74. alt="">
  75. </div>
  76. <div class="item-detail">
  77. <div class="title">${item.title}</div>
  78. <div class="province">${item.areas}</div>
  79. <div class="time">高考动态<span>${item.delay_time}</span></div>
  80. </div>
  81. </a>`;
  82. $(father).append(str);
  83. }
  84. )
  85. $(".ke>.active").append(father);
  86. $("img").lazyload();
  87. resolve({ lock: false, totalPage })
  88. }
  89. })
  90. })
  91. }
  92. // 小屏幕 点击背景关闭 弹窗
  93. $("#nav-sm").click(function () {
  94. $(".my-province div[data-province='true']").hide();
  95. })
  96. })