【问题标题】:jQuery Grab Content and Scroll page horizontallyjQuery 抓取内容并水平滚动页面
【发布时间】:2012-12-18 05:07:08
【问题描述】:

我的目标是在鼠标移动直到鼠标停止(mouseup 事件)时抓取内容 x 并水平滚动页面,类似于平板电脑的滑动动作。

看起来很简单.. 在鼠标按下时获取 clientX, 移动时由 ClientX 向左滚动, 完成后关闭鼠标移动功能。

我已经玩了一段时间了,无法获得我正在寻找的滚动效果..

我在这里做错了什么?

$('#thediv').on('mousedown', function(event) {  
    var e = event;   

    $('#thediv').on('mousemove',function(event){ 
        new_e = event; 
        $('html, body').stop().animate({
            scrollLeft: new_e.clientX  
        }, 300);   
        return false;  
     }); 

    $('#thediv').on('mouseup', function() { 
        $('#thediv').off('mousemove');  
    }); 
}); 

http://jsfiddle.net/mD7mu/

【问题讨论】:

    标签: javascript jquery scroll


    【解决方案1】:
    $('#greendiv').on('mousedown', function(e) {
        $('#greendiv').on('mousemove', function(evt) {
            $('html,body').stop(false, true).animate({
                scrollLeft: e.pageX - evt.clientX
            });
        });
    });
    

    真的很接近。我认为,只需从 pageX 中减去 clientX ,然后在 stop 函数中使用 false,true 即可获得所需的效果。

    here's the fiddle!

    【讨论】:

    • 漂亮!是的,这是想要的效果。
    • 间歇性地,它没有停止 mousemove 函数。这可能是一个 javascript 错误,没有捕获 mouseup 事件以停止 mousemove 函数吗?
    • 我发现了 mouseup 问题的问题,如果 mouseup 事件在 div 之外触发,它不会关闭 mousemove 事件。我还添加了在 mouseout 上删除 mousemove 事件的功能 - 感谢您的帮助:)
    猜你喜欢
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    相关资源
    最近更新 更多