2012-11-08 12 views
9

In meiner Backbone Ansicht gefeuert, ich habe wie folgt definiert Ereignisse:Backbone.js - Sowohl klicken und doppelklicken Sie Ereignis auf einem Elemente

events : { 
    'click .elm' : 'select', 
    'dblclick .elm' : 'toggle' 

}, 

select: function(e){ 
    e.preventDefault(); 
    console.log('single clicked'); 
} 

toggle : function(e){ 
    e.preventDefault(); 
    console.log('double clicked'); 
} 

Ich habe .elm Einzel- und Doppelklickereignis Hörer gleiches Element gebunden . Wenn ich auf dieses Element einen Doppelklick auf, bekomme ich diese Ausgabe:

single clicked single clicked double clicked

Versuchte preventDefault() und stopImmediatePropagation() und dass das Problem nicht lösen.

Also, wie kann ich verhindern, dass das Einzelklick-Ereignis ausgelöst wird, wenn ich doppelklicke?

Antwort

0

Versuchen Sie, return false; am Ende der Auswahl & Toggle hinzufügen.

6

Die jQuery documentation empfiehlt speziell gegen das, was Sie tun:

Es ist nicht ratsam Handler sowohl für die click und dblclick Ereignisse für das gleiche Element zu binden. Die Reihenfolge der ausgelösten Ereignisse variiert von Browser zu Browser, wobei einige Ereignisse nur click Ereignisse vor dem dblclick und andere nur eins empfangen. Die Doppelklick-Empfindlichkeit (maximale Zeit zwischen Klicks, die als Doppelklick erkannt wird) kann je nach Betriebssystem und Browser variieren und ist oft vom Benutzer konfigurierbar.

Was Sie sehen, ist genau das, was erwartet wird (abhängig vom Browser natürlich). Der einzige Weg, um Ihr Problem zu lösen, ist einen Timer einzustellen und manuell zwischen einem Einzel- und Doppelklick zu unterscheiden. dann müssen Sie den Timer-Wert anpassen und verschiedene Browser und Betriebssysteme überprüfen, bis Sie etwas erhalten, das vorgibt, an den meisten Orten zu funktionieren.

Ich würde dringend empfehlen, dass Sie stattdessen separate Steuerelemente mit Einzelklick-Aktionen verwenden. Doppelklick ist ziemlich unfreundlich und wir akzeptieren es nur, weil wir es gewohnt sind.

+0

hmm. Ich muss dann mein Bewerbungsverhalten ändern. – Veera

Verwandte Themen