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?
Antworten
Zu viele Anzeigen?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!
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
}
});
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
}
});