2013-02-19 43 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