jquery弹窗及ajax分页加载tab分类数据详解
本文将详细讲解如何使用JQuery实现点击按钮弹窗,并通过AJAX加载对应TAB分类ID的数据,同时在每个TAB滚动到底部时自动加载下一页数据的功能。 问题中提供的代码存在一个关键缺陷:每次点击TAB时,没有清除之前的加载数据,导致不同TAB的内容混杂在一起。 以下将对代码进行改进,并说明实现细节。
首先,我们需要理解问题的核心在于如何正确地管理每个TAB对应的AJAX请求和数据。原始代码的问题在于loadCategoryData函数中,滚动事件监听器始终作用于同一个.tab_item元素,导致不同分类的数据互相干扰。 解决方法是为每个TAB的数据加载过程设置独立的变量和状态管理。
改进后的代码如下,这里用模拟数据代替了实际的AJAX请求,方便理解和测试:
Document .tab_p { display: flex; } .tab_item { height: 300px; overflow: auto; } .tab_item img { height: 50px; object-fit: cover; }点击我弹窗并加载分类1数据分类1
分类2
分类3
// 不需要总页数,因为总页数是后端返回的,前端不需要知道总页数,只需要知道当前页码即可 // 初始化分类ID currentPage total let categoryId = 1, currentPage = 1, total = 0; // 是否加载中 let isLoading = false; $(document).on('click', '.btn', function () { loadCategoryData(categoryId, currentPage); }) $('.tab_p p').click(function () { currentPage = 1; categoryId = $(this).data('id'); // 加载对应分类的数据 loadCategoryData(categoryId, currentPage); }) function loadCategoryData(id, page) { $(".tab_item").html('加载中...'); $(this).addClass('cur').siblings().removeClass('cur'); loadPageData(id, page); } // 监听滚动事件 $('.tab_item').scroll(function () { console.log('scroll...', $('.tab_item').scrollTop(), $('.tab_item').innerHeight()) if (isLoading) { return; } // 判断是否滚动到底部距离150px 加载更多 const scrollTop = $(this).scrollTop(); const scrollHeight = $(this).prop('scrollHeight'); const containerHeight = $(this).outerHeight(); if (scrollHeight - scrollTop - containerHeight < 150) { // 滚动到底部距离小于150px,加载更多数据 currentPage++; if (currentPage { setTimeout(() => { // 随机返回page条数据 const list = []; // 每次返回20条数据 for (var i = 0; i { // 更新总页数 total = totalPages; let html = ""; for (var i = 0; i < list.length; i++) { html += '@@##@@"' + list[i].title + '"'; } $(".tab_item").append(html); }).finally(() => { isLoading = false; }); }
这段代码通过isLoading变量避免了重复请求,并使用Promise处理异步操作,保证数据加载的顺序性和正确性。 同时,通过在滚动事件中判断距离底部距离来触发加载下一页,提高用户体验。 需要注意的是,实际应用中,/ajax.php?mod=tab接口需要根据实际情况进行替换。 并且,应该在后端返回的数据中包含总页数信息,以便前端能够准确判断是否需要加载下一页数据。

以上就是如何使用JQuery实现弹窗、AJAX分页加载TAB分类数据并解决数据混杂问题?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1564930.html
微信扫一扫
支付宝扫一扫