exam_list.js 4.5 KB

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