1

我有一个流氓滚动事件,每次我使用 Ajax 加载 div 元素时,它都会自动将我的页面滚动到顶部。我该如何追踪?我已经尝试在滚动事件处理程序中设置断点并查看调用堆栈,但这并没有给我任何有用的东西,因为它只是显示它来自 jquery,但我有兴趣知道什么 DOM 元素上的什么事件导致了滚动。

一点背景知识,当单击 div 元素(onclick)时,我正在使用 Ajax 加载 div 元素。注意这不是锚!!但每当我靠近或位于页面底部时,在加载 div 元素并将其添加到页面后,页面会一直滚动到顶部。真的很烦人,并试图追踪启动该流氓滚动的元素......

感谢!

4

2 回答 2

0

如果您不介意 jQuery 插件,请尝试查看航点插件,这个插件非常适合跟踪/处理滚动

于 2012-10-21T03:58:38.167 回答
-1

如果我理解得很好,你需要一个类似的代码,在这段代码中,当用户(通过滚动)距离最后一个元素 4000 像素(在本例中为 div.newDeal:最后)(是一个很长的网络)。

$(document).ready(function() {

//global variable in this script to test if I already made the request ajax ( I dont 
//want to make continious ajax request)
var loaded=false;


$(window).bind('scroll', handlerScroll); //attach event to the scroll


})//end document ready

//FIRE AUTOSCROLL (FIRE REQUEST AJAX)
//*************************************

var handlerScroll=function (){

    //get position of the scroll
    var space=$('#listdeals div.newDeal:last').offset().top - $(window).scrollTop();
    //if that distance is less than (or the middle, or the bottom). fire the request ajax
    if  (space<= 4000  &&     jQuery('div.previousDeal').size()==0){  

        //disable scroll event
        $(window).unbind();



        //
        //build data post
        //
        var  parameters="actionAutoscroll=true&"+.........;

        //MAKE REQUEST AJAX
        //********************

        $.ajax({  
            url: "/offers",  
            type:'POST',  
            data: parameters,   
            success: process_previousDeals       
        });  //end ajax


        return false;

    }
}//end if  load previous deals depending of scroll

}//end handler


function process_previousDeals(results){
 //inject new content in the page
}
于 2012-10-21T04:04:49.990 回答