1

我有一个 jQuery 脚本,它向下滚动到文本区域框的末尾。此函数位于基于 Interval 的自动 div 重新加载器(下面的脚本)中。我想这样做,所以当有人在文本区域中滚动时,向下滚动的脚本部分将被停用。

var refreshId = setInterval(function()
{
    $('#chatArea').load('run/chatBox.php', function() {     
            $('#chatAreaBox').scrollTop($('#chatAreaBox')[0].scrollHeight);
    });
}, 2500);
4

1 回答 1

1

只需检查该scrollTop值即可知道用户是否在执行动画之前向下滚动

var refreshId = setInterval(function()
{
    $('#chatArea').load('run/chatBox.php', function() {    
            if($('#chatAreaBox').scrollTop === 0)
                $('#chatAreaBox').scrollTop($('#chatAreaBox')[0].scrollHeight);
    });
}, 2500);

您还可以将时间戳(使用date())存储在一个scroll()事件中并在您的间隔函数中检查它,然后如果最后一个滚动事件发生在 5 秒以上,则执行动画

var timestamp = null;

    $('#chatArea').scroll(function() {    
        var d = new Date();
        timestamp = d.getTime();    
    });


var refreshId = setInterval(function()
{
    $('#chatArea').load('run/chatBox.php', function() { 

        var d = new Date();

            if((d.getTime() - timestamp) > 5000)
                $('#chatAreaBox').scrollTop($('#chatAreaBox')[0].scrollHeight);
    });
}, 2500);
于 2012-12-16T20:51:11.063 回答