Javascript 仅从特定块读取滚动

Javascript 仅从特定块读取滚动,javascript,jquery,Javascript,Jquery,有必要在“第二”块中准确地读取滚动条,而不是从文档的开头读取滚动条,并且当最终通过ajax加载帖子时,滚动条将悄悄地转到第三个块。简而言之,操作只需要在“第二”块中进行 jQuery(窗口).on('scroll',onScroll); 函数onScroll(){ if(jQuery(window).scrollTop()+100+jQuery(window).height()>jQuery(document).height()){ //阿贾克斯 } } 您可以检查元素的偏移量,查看滚动的点。

有必要在“第二”块中准确地读取滚动条,而不是从文档的开头读取滚动条,并且当最终通过ajax加载帖子时,滚动条将悄悄地转到第三个块。简而言之,操作只需要在“第二”块中进行

jQuery(窗口).on('scroll',onScroll);
函数onScroll(){
if(jQuery(window).scrollTop()+100+jQuery(window).height()>jQuery(document).height()){
//阿贾克斯
}
}

您可以检查元素的偏移量,查看滚动的点。如果您不需要太多ajax请求,那么将ajax调用分配给scroll listener也不是一个好主意。因此,如果您想将调用限制为一个,那么您应该保持一个状态

var second=document.getElementById('.second');//元素的选择器
var state=false;//存储是否已进行ajax调用的状态
jQuery(窗口).on('scroll',onScroll);
函数onScroll(){
if(window.scrollY>second.offsetTop&&!state){
//阿贾克斯
...
...
state=true;//这样它就不会再次进入该块
}
}
如果有一个这样的块,上面的解决方案是有效的,但是如果有多个这样的块,那么可以使用这样的块

如果不想将ajax调用限制为一次,可以忽略
loadedSelectors
,但不限制调用堆栈将是一个坏主意

var选择器=[“第二”、“第三”、“第四”]//您想要的所有选择器都有一个滚动侦听器
var-loadedSelectors=[]//在这里,我们可以添加所有已添加的块
jQuery(窗口).on('scroll',onScroll);
函数onScroll(){
选择器。forEach(函数(i)){
if(window.scrollY>document.getElementByClassName(i).offsetTop&&loadedSelectors.indexOf(i)!=-1){
//阿贾克斯
...
...
loadedSelectors.push(i);//添加到已加载的块列表
}
}

每个块的ajax都是一样的吗?@AbhishekKumarTiwari是的,ajax只在
第二个
块中工作,默认情况下已经有三篇文章了。这不是重点,甚至在没有ajax的块上,出于某种原因,它也看不到滚动条,因为如果我这样写
jQuery('.first')。打开('scroll',o
他不工作。当它说
窗口
时,一切都很好,但我希望它能在特定的块中读取滚动