2013-02-19 3 views
0

J'essaie de garder la position d'un div fixe, lorsque je défile verticalement, mais quand je le fais défiler horizontalement, il devrait suivre. J'ai utilisé ce script jquery:Comment empêcher un scrollLeft non défini, lors du défilement vertical?

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

Cela fonctionne, mais seulement tant que la fenêtre est plus petite que la div. Si la fenêtre est plus grande (et donc pas défilable vers la gauche), scrollLeft est indéfini et mon div est décalé latéralement, lors du défilement vertical. Alors, comment puis-je définir scrollLeft dans ce cas?

+0

simplement pas encore défini la propriété 'left' CSS si' $ (fenêtre) .scrollLeft() 'est pas défini? De cette façon, sa position horizontale ne change pas du tout s'il n'y a pas de barre de défilement horizontale. –

+0

'scrollLeft' devrait retourner' 0' pas 'undefined'. _... si l'élément n'est pas défilable, ce nombre sera 0._ – undefined

Répondre

1

$(window).scrollLeft() ne devrait pas retourner indéfini, il devrait être zéro. Mais pour répondre à votre question

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

OU

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

Cela ne fonctionne toujours pas. La chose étrange est, même si je mets une alerte à l'intérieur de cette condition si-non-indéfinie, je reçois cette alerte et il me dit: indéfini. 'var left = $ (fenêtre) .scrollLeft(); \t \t \t \t \t \t si (à gauche! == undefined) { \t \t \t \t \t \t \t alerte (window.scrollLeft), \t \t \t \t \t \t $ ("navback"). Css ('left ', -left + 10); \t \t \t \t \t \t – 1Blerk

+0

Pouvez-vous créer un JSFiddle.net avec votre code? – epascarello

+0

http://jsfiddle.net/1Blerk/eLBS8/ Mais il produit beaucoup d'alertes, ce qui est un peu ennuyeux. – 1Blerk

Questions connexes