2016-06-14 11 views
0

Ich habe eine Jquery-Funktion, die mehr Post lädt, wenn Scroll-Benutzer unter jeder Zeit hierWie Alarm zeigt nur einmal in jQuery

den jQuery-Code

$(function() { 
    var $timeline = $('#tupdate'), 
     $spinner = $('#loading').hide(); 

    function loadMore() { 
     $(window).unbind('scroll.posts'); 
     $spinner.show(); 
     $.ajax({ 
      url: "/ajax/loadmore?lastPost=" + $(".pointer:last").attr('id'), 
      success: function(html) { 
       if (html) { 
        $timeline.append(html); 
        $spinner.hide(); 
       } else { 
        $spinner.hide(); 
        bootbox.alert('No more post available'); 
       } 
       $(window).bind('scroll.posts', scrollEvent); 
      } 
     }); 
    } 
    //lastAddedLiveFunc(); 
    $(window).bind('scroll.posts', scrollEvent); 

    function scrollEvent() { 
     var wintop = $(window).scrollTop(), 
      docheight = $(document).height(), 
      winheight = $(window).height(); 
     var scrolltrigger = 0.95; 
     if ((wintop/(docheight - winheight)) > scrolltrigger) loadMore(); 
    } 
}); 

Jetzt ist das Problem, wenn unten Benutzer blättern ist popup wird immer angezeigt, was den Benutzer irritiert, wie kann ich nur einmal alarmieren?

hier ist das, was ich

if (!g) { 
    var g = 1; 
    bootbox.alert('No more Post'); 
} 

habe versucht, aber es hält immer noch Alarm jedes Mal zu zeigen i Scoll unten

+0

Erstellen Sie ein Cookie auf dieser Seite und auf anderen löschen, dass Cookie –

+0

Sie versuchen, ist fast corre, t deklarieren g aus der Funktion mit 0 Wert (var g = 0) und wenn Sie in der if sind, ändern Sie zu g = 1 –

+0

Ich glaube nicht, dass Sie die Alarmbox überhaupt benutzen sollten. Sie sollten etwas anderes versuchen, wie zum Beispiel ein letztes Element, das angibt, dass unterhalb des letzten Elements keine weiteren Elemente mehr geladen werden sollen. Sie könnten dieses Element auch entfernen, wenn Sie versuchen, einen Bildlauf durchzuführen und dort plötzlich etwas neues zu laden ist. – Nimphious

Antwort

0

Sie g in den Rahmen zu erklären. Ich habe es zur besseren Lesbarkeit in showAlert umbenannt.

// Declare outside of `loadMore()`. 
    var showAlert = true; // True by default. 

    function loadMore(){ 

    $(window).unbind('scroll.posts'); 
    $spinner.show(); 

    $.ajax({ 
     url: "/ajax/loadmore?lastPost="+ $(".pointer:last").attr('id'), 
     success: function(html){ 
      if(html){ 
       $timeline.append(html); 
       $spinner.hide(); 
      }else{ 
      $spinner.hide(); 
       if (showAlert) 
       { 
        bootbox.alert('No more post available'); 
        showAlert = false; // don't show no more. 
       } 
      } 

      $(window).bind('scroll.posts',scrollEvent); 
     } 
    }); 
    } 
1

Sie eine neue Variable mit Rahmen innerhalb der Callback-Initialisierung, welchen Wert kann nicht Holen Sie sich den nächsten Callback, also aktualisieren Sie die globale Variable. Außerdem ist es besser, statt der Zahl einen booleschen Wert zu verwenden.

if(!g){ 
    g = true; 
    bootbox.alert('No more Post'); 
} 
0

Sie haben g außerhalb $(function(){ zu erklären, um es global zu machen.

So wird Ihr Code wie folgt aussehen:

var g = false; 

$(function() { 
    var $timeline = $('#tupdate'), 
     $spinner = $('#loading').hide(); 

    function loadMore() { 
     $(window).unbind('scroll.posts'); 
     $spinner.show(); 
     $.ajax({ 
      url: "/ajax/loadmore?lastPost=" + $(".pointer:last").attr('id'), 
      success: function(html) { 
       if (html) { 
        $timeline.append(html); 
        $spinner.hide(); 
       } else { 
        $spinner.hide(); 
        if (!g) { 
         bootbox.alert('No more post available'); 
        } 
       } 
       $(window).bind('scroll.posts', scrollEvent); 
      } 
     }); 
    } 
    //lastAddedLiveFunc(); 
    $(window).bind('scroll.posts', scrollEvent); 

    function scrollEvent() { 
     var wintop = $(window).scrollTop(), 
      docheight = $(document).height(), 
      winheight = $(window).height(); 
     var scrolltrigger = 0.95; 
     if ((wintop/(docheight - winheight)) > scrolltrigger) loadMore(); 
    } 
}); 
0

var von

if(!g){ 
g =1; 
bootbox.alert('No more Post'); 

} Entfernen

So wird g Arbeit als globale Variable sein.