Verschiedene Ereignisse an Klick und Doppelklick binden

Avatar of Chris Coyier
Chris Coyier am

Sie möchten vielleicht, dass ein Link eine spezielle Aktion ausführt, wenn er doppelt angeklickt wird, was die Standardaktion des Links (Aufruf einer anderen Seite) verhindert. Also

Doppelklick: führt eine spezielle Aktion aus, normale Klickereignisse werden gar nicht ausgeführt
Klick: funktioniert normal

Sie müssen eine sehr kleine Verzögerung beim Auslösen der normalen Klickaktion haben, die Sie abbrechen, wenn das Doppelklickereignis eintritt.

function doClickAction() {
  $("#click h2").append("•"); 
}
function doDoubleClickAction() {
  $("#double-click h2").append("•"); 
}

var timer = 0;
var delay = 200;
var prevent = false;

$("#target")
  .on("click", function() {
    timer = setTimeout(function() {
      if (!prevent) {
        doClickAction();
      }
      prevent = false;
    }, delay);
  })
  .on("dblclick", function() {
    clearTimeout(timer);
    prevent = true;
    doDoubleClickAction();
  });
Check out this Pen!