我有一个流氓滚动事件,每次使用Ajax加载div元素时,都会自动将页面滚动到顶部。我该如何追踪?我已经尝试在滚动事件处理程序中设置断点并查看callstack但是这并没有给我任何有用的东西,因为它只是显示它来自jquery,但我有兴趣知道哪个DOM元素导致滚动的事件。
一点背景,我在点击div元素时使用Ajax加载div元素(onclick)。注意这不是锚!!但每当我关闭或在页面底部,在加载div元素并将其添加到页面后,页面一直滚动到顶部。真烦人并试图追查发起那个流氓卷轴的元素......
感谢!
答案 0 :(得分:0)
如果您不介意jQuery插件,请尝试查看waypoints plugin,这一点非常适合跟踪/处理滚动
答案 1 :(得分:0)
如果我理解得很好,你需要一个类似于此的代码,在这段代码中,当用户(通过滚动)到距离最后一个元素4000像素的距离时,我会从ajax显示新数据(在这种情况下是div .newDeal:last)(是一个很长的网站)。
$(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
}