2017-06-30 12 views
0

Ich habe eine Seitenumbruch-Schaltfläche, die eine Ajax-Funktion ausführt, um neue Ergebnisse auf der Seite zu ziehen. Alles funktioniert gut, die einzige Sache ist, dass wenn ich auf den Knopf doppelklicke, ich die Ergebnisse verdoppeln, weil es 2 identische Anrufe macht.Deaktivieren Sie Doppelklick auf jQuery AJAX-Ereignis

Ich weiß, es gibt viele Abhilfe für dieses Ding, aber nichts scheint vollständig zu funktionieren.

Jetzt bin ich mit einem var als Flag ...

var isPaging = 0; 
$('.container').on('click', '.bh-pagination-button', function(){ 

    if (!isPaging) { 

     isPaging = 1; 

     callBehanceProjectsList(); 

     isPaging = 0; 
    } 
}); 

Es scheint zu arbeiten, wenn ich etwas langsam bin, aber wenn ich mich sehr schnell zweimal oder dreimal in klicken, es macht n-te Anrufe, alle identisch.

Dann sah ich, gibt es andere Lösungen gibt:

one(); 
unbind(); 
die(); 

etc... 

Diejenigen Haushalte tatsächlich funktionieren könnte, das Problem ist, dass wenn ich das Click-Ereignis zu deaktivieren, kann ich es nicht wieder zu aktivieren, und ich brauche viele klicken Zeiten nach dem Ende der Seitennummerierung.

Haben Sie eine Idee?

Vielen Dank im Voraus.

Antwort

1

Wie wäre es mit so etwas?

Auf diese Weise wird die Schaltfläche deaktiviert, kurz bevor die Seitennumerierung beginnt, und wird automatisch aktiviert, nachdem die Seitennumerierung beendet ist. Dies verhindert mehrere Klicks auf die Schaltfläche, daher wird auch die Notwendigkeit für eine bestimmte Variable eliminiert.

+0

es scheint eine kühle Lösung, aber es funktioniert nicht. Ich habe sogar versucht, nur die "prop disable" zu lassen, ohne sie am Ende erneut zu aktivieren, aber sie funktioniert normal weiter. – rolfo85

+0

@ rolfo85 - Können Sie Ihren HTML-Code anzeigen? Aktualisiere die Frage damit. – 31piy

+0

Es ist ein Plugin und alles HTML wird dynamisch generiert. Einschließlich der Schaltfläche, auf die ich klicke. – rolfo85

0

Ich denke, Sie müssen Jquery.BlockUI.Js verwenden.

Hier ist der Beispielcode ist, dass für,

$(document).ready(function() { 

    $("#Button3").click(function() { 
    console.log('d'); 
     $.blockUI(); 
     setTimeout(function() { 
      $.unblockUI({ 
       onUnblock: function() { 
       //Write your unblock logic 
        alert('onUnblock'); 
       } 
      }); 
     }, 2000); 
    }); 
}); 

Sie es sogar nach dem Aufstehen Antwort von dem Ajax-Aufruf entsperren können, scheint dies eine bessere Lösung für Ihre Situation zu sein.

Arbeits Fiddle: http://jsfiddle.net/nwjsgxrp/

+0

Danke, aber ich kann keine externe Ressource verwenden. Ich baue ein Plugin, also würde ich lieber nur jquery verwenden – rolfo85

Verwandte Themen