jquery鼠标滚动到页面底部,按顺序ajax页面

去圣西罗-为尤文喝彩 2012-02-13 05:40:00

|-------------------|
| |
| 主页面部分 |
| |
|___________________|

______________________
-------- |
| DIV1 | |
-------- |--------
|| DIV2 |
-------- |--------
| DIV3 | |
-------- |--------
|| DIV4 |
|--------


上面的图是页面布局。主页面部分高度大概有800px,DIV1,DIV2,DIV3,DIV4为4个空的DIV。
我想实现一个效果,当鼠标滚动页面底部是,按顺序 jquery.ajax 内容到上述四个DIV,且条件是当一个加载完后,再加载第二个DIV。

我尝试下面的方法,但是不起作用,求助大家,有什么方法可以实现我要的效果?(关键是jquery.ajax一个加载完后,再执行下一个加载)


$('div').each(function(){
if(!$(this).contents().length){//用each,判断是否DIV里已有内容?避免重复加载。
$(window).scroll(function(){
if ($(window).scrollTop() == $(document).height() - $(window).height() + $('#footer').height()){
//判断鼠标是否滚动到页面底部,这里还需要去除一个 div#footer 页脚的高度
var toRequest=new Array("div1", "div2", "div3", "div4");//把4个DIV存为数组
$.ajax({
url: "ajax.php" ,
dataType: "html",
type: 'POST',
data: toRequest[index]+'=1',//分别发送各自的数据到ajax.php,调回数据
success: function(data){
$("#"+toRequest[index]).html(data);//返回数据到各自的DIV里
if (index+1<toRequest.length) {
doRequest(index+1);
//ajax返回成功后,index+1,进入数组下一个
}
}
});
});
});
});

...全文
555 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
longzl123 2014-09-23
  • 打赏
  • 举报
回复
url : path + "/pr/ajax.jsp", 这个给的是一个空的 为了能使ajax的url有地方去 <script type="text/javascript"> $(document).ready( function() { var path = $("#path").val(); $.ajax({ url : path + "/pr/ajax.jsp", dataType : "html", type : 'get', success : function(data) { $("#div").html("<div class=\"m-cnt cnt2\" id=\"div1\"><img src=\"${pageContext.request.contextPath}/pr/img/images_1.png\" alt=\"以个人电脑为信息交互\" /></div>"); /*-----1-------------------------------------------*/ $.ajax({ url : path + "/pr/ajax.jsp", dataType : "html", type : 'get', success : function(data) { $("#div1").after("<div class=\"m-cnt cnt2\" id=\"div2\"><img src=\"${pageContext.request.contextPath}/pr/img/images_2.png\" alt=\"随时随地3C平台信息交流\" /></div>"); /*-----2-------------------------------------------*/ $.ajax({ url : path + "/pr/ajax.jsp", dataType : "html", type : 'get', success : function(data) { $("#div2").after("<div class=\"m-cnt cnt2\" id=\"div3\"><img src=\"${pageContext.request.contextPath}/pr/img/images_3.png\" alt=\"多名家庭成员同时使用同一台电脑\" /></div>"); /*-----3-------------------------------------------*/ $.ajax({ url : path + "/pr/ajax.jsp", dataType : "html", type : 'get', success : function(data) { $("#div3").after("<div class=\"m-cnt cnt2\" id=\"div4\"><img src=\"${pageContext.request.contextPath}/pr/img/images_4.png\" alt=\"手机、平板深度办公\" /></div>"); /*-----4-------------------------------------------*/ /*$.ajax({ url : path + "/pr/ajax.jsp", dataType : "html", type : 'get', success : function(data) { $("#div4").after("<div class=\"m-cnt cnt2\" id=\"div4\"><img src=\"${pageContext.request.contextPath}/pr/img/images_5.png\" alt=\"以个人电脑为信息交互\" /></div>");*/ /*-----foot1----------------------------------------------*/ $.ajax({ url : path + "/pr/ajax.jsp", dataType : "html", type : 'get', success : function(data) { $("#foot1").html("<img src=\"${pageContext.request.contextPath}/pr/img/images_6.png\" />"); /*-----foot2----------------------------------------------*/ $.ajax({ url : path + "/pr/ajax.jsp", dataType : "html", type : 'get', success : function(data) { $("#foot2").html("<img src=\"${pageContext.request.contextPath}/pr/img/images_20.png\" alt=\"以个人电脑为信息交互\" />"); } }); /*-----foot2----------------------------------------------*/ } }); /*-----foot1----------------------------------------------*/ /* } });*/ /*-----4-------------------------------------------*/ } }); /*-----3-------------------------------------------*/ } }); /*-----2-------------------------------------------*/ } }); /*-----1-------------------------------------------*/ } }); }); </script>
longzl123 2014-09-15
  • 打赏
  • 举报
回复
引用 1 楼 imtns59521 的回复:

$('div').each(function(){
if(!$(this).contents().length){//用each,判断是否DIV里已有内容?避免重复加载。
$(window).scroll(function(){
    if ($(window).scrollTop() == $(document).height() - $(window).height() + $('#footer').height()){
    //判断鼠标是否滚动到页面底部,这里还需要去除一个 div#footer 页脚的高度
    var toRequest=new Array("div1", "div2", "div3", "div4");//把4个DIV存为数组
    $.ajax({
        url: "ajax.php" , 
        dataType: "html",
    type: 'POST',
    data: $("#div1"),//分别发送各自的数据到ajax.php,调回数据
    success: function(data){ 
        $("#div1").html(data);//返回数据到各自的DIV里
        if (data!="") { //呵呵,你在success里在加载第二个DIV,写的笨了点,不过应该是这个意思
            $.ajax({
        url: "ajax.php" , 
        dataType: "html",
    type: 'POST',
    data: $("#div2"),//分别发送各自的数据到ajax.php,调回数据
    success: function(data){ 
        $("#div2").html(data);//返回数据到各自的DIV里
        if (data!="") {
            ...
        }
    }
   }); 
        }
    }
   }); 
});
});
});

非常感谢!!!
  • 打赏
  • 举报
回复
纠结完毕,感谢imtns59521,有灵感了。
  • 打赏
  • 举报
回复
@imtns59521, 感谢,印象里Lazyload只能加载图片,可以加载AJAX内容吗?
hellNo 2012-02-15
  • 打赏
  • 举报
回复
楼主说的是当滚轮滚到DIV处时,然后加载,滚到哪个加载哪个是吗??
这种功能你可以用Lazyload实现啊,效率很高的,而且功能实现更好!
现在什么拉手,58同城的团购网站都用的这个效果,就是当鼠标滚轮滚到当前DIV在加载图片或者DIV
给你参考看看!
cm_boy 2012-02-15
  • 打赏
  • 举报
回复
async :false 同步
  • 打赏
  • 举报
回复
@imtns59521, 嘿,你好。你的方法一层嵌一层,也就是鼠标滚到下面后,4个DIV一个接一个全部都打开了。

我的需求有点区别,因为四个DIV位置有错落。所以:

1.当鼠标滚到第一个DIV的范围且没有进入第二个DIV的范围时,只加载第一个DIV。

______________________
-------- |
| DIV1 | | 鼠标位置


2.当鼠标滚到第一个DIV的范围且同时进入第二个DIV的范围时,按顺序加载第一个DIV,完成后再加载第二个DIV。

______________________
-------- |
| DIV1 | |
-------- |--------
鼠标位置 || DIV2 |


DIV3,DIV4 依次类推。


2楼的答案也一样,得考虑这个因素。谢谢。
KingViker 2012-02-14
  • 打赏
  • 举报
回复
搂住可以将四个div的ajax函数设置为同步,也就是说第一个div的ajax返回了 才会执行第二个ajax async :false
hellNo 2012-02-14
  • 打赏
  • 举报
回复


$('div').each(function(){
if(!$(this).contents().length){//用each,判断是否DIV里已有内容?避免重复加载。
$(window).scroll(function(){
if ($(window).scrollTop() == $(document).height() - $(window).height() + $('#footer').height()){
//判断鼠标是否滚动到页面底部,这里还需要去除一个 div#footer 页脚的高度
var toRequest=new Array("div1", "div2", "div3", "div4");//把4个DIV存为数组
$.ajax({
url: "ajax.php" ,
dataType: "html",
type: 'POST',
data: $("#div1"),//分别发送各自的数据到ajax.php,调回数据
success: function(data){
$("#div1").html(data);//返回数据到各自的DIV里
if (data!="") { //呵呵,你在success里在加载第二个DIV,写的笨了点,不过应该是这个意思
$.ajax({
url: "ajax.php" ,
dataType: "html",
type: 'POST',
data: $("#div2"),//分别发送各自的数据到ajax.php,调回数据
success: function(data){
$("#div2").html(data);//返回数据到各自的DIV里
if (data!="") {
...
}
}
});
}
}
});
});
});
});

87,909

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧