我正在遇到一种情况!
每当用户滚动到滚动条的最底部时,我都会尝试更新jscrollpane中的内容。
没有找到解决方案,当滚动条处于底部时,我尝试发送ajax请求。
但是,每当滚动条获得atBottom时,事件就会进入一个不停的运行过程。
我尝试使用event.stopPropagation(),但没有成功!
以下是我正在使用的代码:
$( 'div.scroll-pane-produts' ).bind( 'jsp-scroll-y',
function( event, scrollPositionY, isAtTop, isAtBottom ) {
if( isAtBottom ) {
event.stopPropagation();
// $.post('some-url');
alert('infinite alerts from here');
}
}
).jScrollPane();
虽然问题本身与来自jscrollpane的事件有关,但我也很欣赏通过ajax请求更新DIV内容的另一种解决方案!
提前致谢...
答案 0 :(得分:0)
这不是这个问题的直接答案,但我偶然发现谷歌是因为我的滚动条一直反复发射事件,即使我没有滚动。
原来这是因为我使用的是autoReinitalise
,它每500毫秒重新初始化滚动条,无论内容是否已添加/删除该区域。
我添加了一些代码来阻止这种情况发生。除非高度已经改变,否则我添加的代码将阻止它被触发。
首先,我添加了一个名为prevHeight
的变量,并将其设置为0
。
然后在229行左右我调整了代码:
if (settings.autoReinitialise && !reinitialiseInterval) {
reinitialiseInterval = setInterval(
function () {
var clientHeight = pane[0].clientHeight; //Add this line of code
if (prevHeight !== clientHeight || prevHeight === 0) { //Add this condition
initialise(settings);
}
prevHeight = clientHeight ; //Add this line of code
},
settings.autoReinitialiseDelay
);
}
注意:我只关心垂直滚动条,我没有使用任何水平滚动条。如果你关心两个检查,你会想要两个检查(一个用于垂直检查,一个用于水平检查)。你只需要创建一个prevWidth
变量,然后根据`pane [0] .clientWidth进行检查。
这解决了我的问题,希望它可以帮助其他人遇到此页。