6 Stimmen

Sowohl mousedown/mouseup als auch dblclick in jQuery haben

Wann immer ein Mousedown- oder Mouseup-Handler an ein Element angehängt ist, kann der dblclick nicht angehängt werden (funktioniert nicht, wenn er angehängt ist), obwohl dies fair genug scheint, gibt es irgendeine Möglichkeit, eine dblclick-Funktionalität wiederherzustellen, ohne sie von Grund auf neu zu schreiben (seufz...) Oder übersehe ich etwas bei der Weitergabe von Ereignissen?

4voto

Emil Ivanov Punkte 36508

Es funktioniert - geben Sie diesen Code in Firebug auf dieser Seite ein und Sie werden sehen, dass es funktioniert (versuchen Sie, auf den Text Ihrer Frage zu doppelklicken):

($('.post-text')
    .mousedown(function () { console.log('down'); })
    .mouseup(function () { console.log('up'); })
    .dblclick(function () { console.log('dbclick'); }));

Sie haben keine Firebug ? Nimm es, ich warte!

3voto

Johncl Punkte 1207

Der event.detail-Parameter zählt die Anzahl der aufeinanderfolgenden Klicks, so dass es möglich ist, damit zu erkennen, dass ein Doppelklick stattgefunden hat.

$('#mybutton').on('click',function(e) {
  console.log("User left clicked!"); // do select code
  if (e.button == 0 && e.detail == 2) {
    console.log("User left doubleclicked!"); // do action code
  }
});

2voto

kuzzmi Punkte 189

Obwohl diese Frage schon sehr alt ist, möchte ich zeigen, wie ich damit umgegangen bin.

Dieser Block wird nicht Arbeit:

        $(element).on('mousedown', function(event) {
            ...
        });

        $(element).on('dblclick', function(event) {
            ...
        });

Sie können jedoch dieses Snippet verwenden, um denselben Verhaltenshandler zu erstellen:

        var clicks = 0, delay = 400;
        $(element).on('mousedown', function(event) {
            event.preventDefault();
            clicks++;

            setTimeout(function() {
                clicks = 0;
            }, delay);

            if (clicks === 2) {
                // double click event handler should be here
                clicks = 0;
                return;
            } else {
                // mousedown event handler should be here
            }
        });

1voto

naugtur Punkte 16667

Ihr Mousedown und Mouseup nicht:

  1. do e.stopPropagate etc.
  2. return false

und es sollte funktionieren, wenn Ihr Code keinen Konflikt zwischen diesen Methoden aufweist

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X