1

我正在创建一个水平滚动站点。不要恨!一切似乎都工作正常,除了当我在 mousedown 上绑定 mousemove 事件时,dom scrollLeft 属性没有改变。'moving' 和 'mouseup' 都在适当的时候被写入控制台。这是我的代码... 编辑:另外,我注意到如果我在 mousedown 上将 $('#container').scrollLeft 写入控制台,它会返回 'function()' 而不是一个值。

$(document).ready(function() {
    $('#container').mousedown(function(event) {
        $(this)
            .data('down',true)
            .data('x',event.pageX)
            .data('scrollLeft',this.scrollLeft)
            .css({'cursor':'url("http://www.loodieloodieloodie.com/images/closedhand.cur"),auto'});
        $('body').bind('mousemove',function(event) {
            console.log('moving');
            $('#container').scrollLeft = $('#container').data('scrollLeft') + ($('#container').data('x') - event.pageX) * 2;
        }).bind('mouseup',function() {
            $('#container')
                .data('down',false)
                .css({'cursor':'url("http://www.loodieloodieloodie.com/images/openhand.cur"),auto'});
            console.log('mouseup');
            $(this).unbind('mousemove');
        });
        return false;
    }).css({
        'overflow':'hidden',
        'cursor':'url("http://www.loodieloodieloodie.com/images/openhand.cur"),auto'
    });
});

这是基本的html...

<body>
    <div id="container">
        <div id="inner">
            CONTENT
        </div>
    </div>
</body>

谢谢你的帮助,B

4

1 回答 1

2

jQuery 对象没有.scrollLeft 属性,所以用 tis 代替:

$('#container').scrollLeft = $('#container').data('scrollLeft') + ($('#container').data('x') - event.pageX) * 2;

您需要这样的函数调用:.scrollLeft()

$('#container').scrollLeft($('#container').data('scrollLeft') + ($('#container').data('x') - event.pageX) * 2);

或一个.css()电话,像这样:

$('#container').css({ scrollLeft: $('#container').data('scrollLeft') + ($('#container').data('x') - event.pageX) * 2 });
于 2010-12-28T15:37:55.180 回答