1

我正在遇到一个情况!

每当用户滚动到滚动条的最底部时,我都会尝试更新 jscrollpane 中的内容。

没有找到解决方案,我尝试在滚动条位于底部时发送 ajax 请求。

但是,每次滚动条到达底部时,事件都会进入一个不停运行的进程。

我尝试使用 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 内容的解决方案!

提前致谢...

4

1 回答 1

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 检查它。

这解决了我的问题,希望它可以帮助其他一些遇到此页面的人。

于 2013-10-11T19:58:59.380 回答