2013-02-19 41 views
0

我试图在垂直滚动时保持div的位置不变,但是当水平滚动时它应该跟随。我用这个jQuery脚本:如何在垂直滚动时防止未定义的scrollLeft?

$(window).scroll(function(){ 
$(".navback").css('left',-$(window).scrollLeft()+10); 
}); 

它的工作原理,但只有窗口小于div。如果窗口较大(因此不能滚动到左​​侧),scrollLeft未定义,当垂直滚动时,我的div将移动到一侧。 那么如何在这种情况下定义scrollLeft?

+0

根本就没有设置'left' CSS属性,如果'$(窗口).scrollLeft()'是不确定的?这样,如果没有水平滚动条,它的水平位置根本不会改变。 – 2013-02-19 13:51:56

+0

'scrollLeft'应该返回'0'而不是'undefined'。 _...如果元素不可滚动,则此数字将为0._ – undefined 2013-02-19 13:52:33

回答

1

$(window).scrollLeft()不应该返回undefined,它应该为零。但是,为了回答你的问题

var left = $(window).scrollLeft() || 0; 
$(".navback").css('left',-left+10); 

OR

var left = $(window).scrollLeft(); 
if(left !== undefined) { 
    $(".navback").css('left',-left+10); 
} 
+0

它仍然不起作用。奇怪的是,即使我在这个if-not-undefined条件中加入了一个alert,我也会得到这个alert,并告诉我:undefined。 'var left = $(window).scrollLeft(); \t \t \t \t \t \t如果(左!==未定义){ \t \t \t \t \t \t \t警报(window.scrollLeft), \t \t \t \t \t \t $( “navback”)。CSS(“左”,-left + 10); \t \t \t \t \t \t}' – 1Blerk 2013-02-19 14:31:35

+0

你可以用你的代码创建一个JSFiddle.net吗? – epascarello 2013-02-19 14:35:43

+0

http://jsfiddle.net/1Blerk/eLBS8/但它产生了很多警报,这有点烦人。 – 1Blerk 2013-02-19 17:06:40