2010-12-28 13 views
0

Ich entwickle ein kleines Projekt und ich brauche eine Hilfe in JQuery Scroll-Ereignis. Ich schrieb Datencode Laden bei der Verwendung von Scroll-Code folgendenBenötigen Sie Hilfe in JQuery Scroll-Funktion

$(window).scroll(function(){ 
      if ($(window).scrollTop() > ($(document).height() - $(window).height())*.75){ 
       $('#loadingimage').css({"bottom":"10px", "right":"10px"}).fadeIn('fast'); 
       $.ajax 
       ({ 
        type: "POST", 
        url: "../../scroll_load.php", 
        data: "letter="+letter+"&start="+start, 
        success: function(msg) 
        { 

         $('#new_music_videos .appendvideos').append(msg).children(':last').hide().fadeIn('slow'); 
         $('#loadingimage').fadeOut('fast'); 
        } 
       }); 

      } 
      }); 

Aber Laden von Daten während der Bildlaufleiste wird nur am unteren Rand des Bildschirms zu bewegen. Wie kann ich es für scrollen bis zu 3/4 des Bildschirms machen.

Vielen Dank.

Antwort

1

Für die aktualisierte Frage:

var loading = false; //stores if we're loading, to prevent "over-loading", I'm hilarious 
$(window).scroll(function(){ 
    //if we're loading, or the scroll wasn't 3/4 of the way down, ignore the event 
    if (loading || $(window).scrollTop() < ($(document).height() - $(window).height())*.75) return; 

    loading = true; //loading! prevent scroll from loading until we're finished 
    $('#loadingimage').css({"bottom":"10px", "right":"10px"}).fadeIn('fast'); 
    $.ajax({ 
     type: "POST", 
     url: "../../scroll_load.php", 
     data: "letter="+letter+"&start="+start, 
     success: function(msg) { 
      loading = false; //done loading, a scroll can load more again 
      $('#new_music_videos .appendvideos').append(msg).children(':last').hide().fadeIn('slow'); 
      $('#loadingimage').fadeOut('fast'); 
     } 
    }); 
}); 

Für frühere Frage:
Sie können nur prüfen, ob es nach unten über 3/4 der Art und Weise ist, anstatt gleich die Gesamt, wie dies :

$(window).scroll(function() { 
    if ($(window).scrollTop() > ($(document).height() - $(window).height())*.75) { 
    //rest of code 

Beachten sie, dass dies mit, vor allem auf längeren Seiten, es jetzt true viele Male vor dem Erreichen der Boden sein wird, Daher sollten Sie wahrscheinlich ein boolesches Flag setzen, um zu verhindern, dass neuer Inhalt mehrmals gleichzeitig geladen wird.

+0

@Nick Craver: Danke für den Tipp. Aber damit werden so viele Anfragen gesendet und viele Daten werden geladen. Ich denke, Schleife läuft oft – KillerFish

+0

@KillerFish - siehe unten in der Antwort :) Sie wollen wahrscheinlich eine 'var loading' außerhalb, eine' loading = true' innerhalb der 'if' und eine' if (loading) Rückkehr; ' * vor * dem 'if' und setze nur 'loading = false', wenn du das Laden neuer Daten abgeschlossen hast. –

+0

@Nick Sory Ich habe deine Antwort nicht vollständig gelesen .. kannst du meinen Code ändern ... ich werde dir sehr dankbar sein .. ich aktualisiere meine Frage. – KillerFish

Verwandte Themen