0

我在这里有一个 jsfiddle - http://jsfiddle.net/stevea/4sBep/2/ - 它有一个可拖动的米色框。当您右键单击该框时,会在其右侧创建一个红色框。如果米色框离右边缘太近,以至于看不到完整的红色框,则会为 body 元素显示一个滚动条。

问题是在创建红框(底部第三行)后我无法读取 body 的 scrollLeft 值,以查看没有显示多少红框,并且我无法设置 body滚动值以显示更多红色框(最后一行)。

有没有人看到问题?谢谢

 $('#box').draggable();
    $('#box').contextmenu(function(e) {
        e.preventDefault();
        var doc_offset;
        boxWidth = $('#box').width();

        doc_offset = $(this).offset();
        doc_offset.left = doc_offset.left +  boxWidth + 20;
        $('<div>').css({width:"150px", 
                        height:"150px",
                        'background-color':'red',
                        position : 'absolute'
                       })
                 .offset(doc_offset)
                  .appendTo('body');  

        var scroll_left = $('body').scrollLeft();
        $('#scrollStatus').html("Scroll left is " + scroll_left);
        $('body').scrollLeft(150);

     });
4

1 回答 1

1

您正在scrollLeft()正确阅读。问题是,当您设置它时,您只是要求它滚动 150,而不是在当前滚动中添加 150。你应该做

$('body').scrollLeft(scroll_left + doc_offset.left);

查看演示这将设置正文滚动以显示整个红色框。

于 2013-09-09T19:34:10.063 回答