无法读取或设置body的scrollLeft

时间:2013-09-09 18:59:26

标签: jquery jquery-ui

我有一个jsfiddle - http://jsfiddle.net/stevea/4sBep/2/ - 有一个可拖动的米色盒子。右键单击该框时,会在其右侧创建一个红色框。如果米色方框太靠近右边缘,因此无法看到完整的红色框,则会显示主体元素的滚动条。

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

有没有人看到这个问题? 感谢

 $('#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);

     });

1 个答案:

答案 0 :(得分:1)

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

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

请参阅demo这将设置正文滚动以显示整个红色框。