2009-12-14 20 views
5

Ho visto un bel po 'di discussioni qui che parlano di sfarfallio in Firefox, ma nessuno che descriva abbastanza il problema che sto avendo.Firefox jquery scrollTo flicker bug

Ho un sito Web a scorrimento orizzontale, menu di posizione fissa e il plugin jquery .scrollTo gestisce i pulsanti precedente e successivo. Funziona alla grande in Chrome e Safari (non so di IE), ma in Firefox c'è uno sfarfallio ogni volta che scorri da destra a sinistra con le frecce in alto a destra e in alto.

See An Example Here

Ho provato a installare tutti gli elementi che hanno una posizione fissa a overflow: auto, ma che non ha fatto nulla. Non ho molta familiarità con JS o Jquery, ma conosco abbastanza per cambiare le cose. Qualsiasi aiuto sarebbe molto apprezzato!

+0

Non c'è nessun sfarfallamento per me: Mac OS X (10.6.2), Firefox 3.3.5 – Paul

risposta

11

Il problema è che non si sta annullando l'azione browser predefinita nella funzione clic. Modificare il codice per questo, e lo sfarfallio andrà via:

$(function(){ 
    $(".next").click(function(e) { 
     $.scrollTo('+=1000px', 600); 
     e.preventDefault(); 
    }); 
    $(".prev").click(function(e) { 
     $.scrollTo('-=1000px', 600); 
     e.preventDefault(); 
    }); 
}); 

Firefox sta cercando di "scorrere fino alla #" e animare allo stesso tempo.

+1

Grazie! Questo è stato. Avrei dovuto solo chiedere invece di trollare l'interwebs per dieci ore questa settimana. ;). –

+0

Felice di aiutare! Assicurati di controllare il segno di spunta verde accanto a questa risposta in modo che sia contrassegnato come "risolto". E benvenuto su StackOverflow! Spero di vederti di più! –

+0

+1 penseresti che questo sfarfallio sarebbe stato risolto ora .. non lo ha :( – cp3

1

Subito dopo il mio commento sulla segnalibro della pagina sul post di Doug, la luce nella mia testa si è accesa! Spero si può adattare allo script, se avete bisogno di bookmarkability

<a href="#gohere" class="mylink">Click</a> 
... 

$('.mylink').click(function(e) { 
    e.preventDefault(); 
    var anchor = $(this).attr('href'); 
    $.scrollTo(anchor, 1000, { 
     onAfter: function(){ 
      location.hash = anchor; 
     } 
    }); 
});