blog.bartlweb - a technologist's external brain

Klick und Doppelklick-Event auf dasselbe Element per JS abfangen

Die folgende jQuery-Funktion von Jacek Becela (http://gist.github.com/399624) erlaubt das Abfangen von Klick- und Doppelklick-Events auf ein Element. Werden beide Events mit den jQuery-Standardfunktionen gesetzt, so wird das Klick-Event auch bei Doppelklicks ausgeführt. Sollen beide Events getrennt behandelt werden hilft der folgende Code. Dieser wertet in <= 300ms hintereinanderfolgende Klicks als Doppelklick alle anderen als einfache Klicks.

Aufruf

jQuery("a.doubleclick").single_double_click(function(){
  alert("single click");
}, function(){
  alert("double click");
});

Code

// Author: Jacek Becela
// Source: http://gist.github.com/399624
// License: MIT
 
jQuery.fn.single_double_click = function(single_click_callback, double_click_callback, timeout) {
  return this.each(function(){
    var clicks = 0, self = this;
    jQuery(this).click(function(event){
      clicks++;
      if (clicks == 1) {
        setTimeout(function(){
          if(clicks == 1) {
            single_click_callback.call(self, event);
          } else {
            double_click_callback.call(self, event);
          }
          clicks = 0;
        }, timeout || 300);
      }
    });
  });
}

Dieser Artikel hat dir deinen Tag gerettet?
... und mühevolles Probieren, Recherchieren und damit Stunden an Zeit gespart? ... oder einfach nur dein Problem gelöst?

Dann würde ich mich freuen, wenn Du meine Zeit für die Erstellung dieses Blogartikels mit einer kleinen Spende honorierst:

Kommentare

Noch kein Kommentar vorhanden.
Sei der Erste - ich freue mich über deine Anmerkungen, Kritik und Fragen.

Kommentar schreiben

Deine E-Mailadresse wird nur für Benachrichtigungen und Rückfragen verwendet und wird nicht veröffentlicht.

Benachrichtigungen können jederzeit wieder abbestellt werden.

Bitte tippe die Zahlenkombination "1272" ein, nur dann kann ich deinen Kommentar entgegennehmen.

Bitte fülle dieses Feld nicht aus, nur dann kann ich deinen Kommentar entgegennehmen.