2012-02-15 10 views
7

Con il seguente codice, sto cercando di trovare quando l'utente scorre fino alla fine della pagina. In JQuery mobile.Utente JQuery Mobile scorri in fondo

$(window).scroll(function(){ 
    if($(window).scrollTop() == $(document).height() - $(window).height()){ 
      alert("The Bottom"); 
    } 
}); 

Per ora voglio solo che emetta che hanno raggiunto il fondo.

Il mio problema è che quando il sito viene caricato, verrà emesso questo messaggio. Quando scorro verso il basso, emetterà l'avviso.

C'è un modo per impedirlo di farlo quando la pagina è caricata e lo fa solo quando l'utente ha fisicamente scrollato la pagina?

Grazie

risposta

7

È perché il contenuto è più breve della pagina? Significa che quando si carica, sei già in fondo. Ho provato a replicare il tuo problema qui http://jsfiddle.net/qESXR/2/ e si comporta come vuoi tu. Tuttavia se accorro il contenuto e lo eseguo localmente sulla mia macchina ottengo lo stesso risultato che hai.
Se è così, si potrebbe verificare l'altezza della pagina vs altezza del HTML usando questi

$(window).height(); // returns height of browser viewport 

$(document).height(); // returns height of HTML document 

come questo:

$(window).scroll(function(){ 
    if($(document).height() > $(window).height()) 
    { 
     if($(window).scrollTop() == $(document).height() - $(window).height()){ 
      alert("The Bottom"); 
     } 
    } 
}); 
+0

Sì, i dati vengono caricati in modo dinamico. quindi il caricamento iniziale è vuoto, ma una volta che i dati sono stati inseriti nel DOM, ovviamente si espande. –

+0

Sembra che tu debba aggiungere lo scroll in modo dinamico dopo aver caricato il contenuto. Se è così, ecco una buona risorsa http://stackoverflow.com/questions/4306387/jquery-add-and-remove-window-scrollfunction – davehale23

+0

Grazie mille! questo mi sta facendo impazzire !! –

1

Il problema è che di jQuery Mobile page widget tratta ogni "pagina" come la finestra fino allo scrolling. Per rilevare quando l'utente ha fatto scorrere fino alla fine, associare la funzione di scorrimento per $(document) invece:

http://jsfiddle.net/5x6T2/

$(document).scroll(function() { 
    if ($(window).scrollTop() + $(window).height() == $(document).height()) { 
     alert("Bottom reached!"); 
    } 
});