Sie können stattdessen .one
verwenden. Dadurch wird das Ereignis nur einmal ausgelöst, aber es wird auch die Bindung entfernt, sobald sie ausgelöst wurde:
Wenn Sie die Bindung beibehalten müssen, müssen Sie den Status der Maustaste und das aktuelle Ziel, das mousedown
ausgelöst hat, im Auge behalten:
Siehe Testfall auf jsFiddle .
Eine kleine Hysterese könnte eine Option sein. Im Prinzip notieren Sie das letzte Mal, wann Sie auf ein Ereignis geantwortet haben und ignorieren nachfolgende Ereignisse innerhalb einer Schutzzeit.
Sie könnten dafür die data
von jQuery verwenden (Beispiel am Ende der Antwort), aber ich bevorzuge das: Ein universeller Entpreller:
Live-Beispiel mit click
und focus
| Live-Quelle
Die Funktion debouncer
:
(Der Name "Entpreller" ist ein gebräuchlicher Begriff für etwas, das Hysterese verwendet, um Eingaberaten zu begrenzen. IIRC, kommt von "Schalter Entpreller", der eine (sehr) einfache Schaltung ist, um zu vermeiden, eine Aktion hunderte Male auszulösen wenn ein elektrischer Schalter mit mechanischer Umschaltung von offen zu geschlossen wird und umgekehrt, da, wenn die Kontakte in die Nähe kommen, eine große Anzahl von geschlossenen / offenen / geschlossenen / offenen / geschlossenen / offenen Ratterungen auftreten kann, bevor der Schalter stabil wird Dieser Chat wird " hüpfen , also" Entpreller "genannt.")
Der Ansatz verwendet nur jQuerys data
:
Das ist eine alte Frage, aber ich konnte keine anderen Antworten finden, wie zum Beispiel, was mein Problem gelöst hat. Also poste ich es hier für jeden, der zufällig auf dieses Problem im Jahr 2015 stößt.
%Vor%Dies löst das Ereignis nur beim Klicken aus. Ich bin mir nicht sicher, was hinter den Kulissen passiert, also kann mir vielleicht jemand das erklären, aber Tabs und Fokus erscheinen unberührt und funktionieren zu 100%.
Dadurch wird das ausgewählte Objekt nicht fokussiert, aber der Fokuspfad wird wieder an den Anfang des Dokuments gesetzt. Ich lasse das hier, damit ich das ausgewählte Element erneut anklicken kann, um ein Menü zu deaktivieren. Ich suche immer noch nach einem Fix, um den Fokuspfad zu behalten.
Bearbeiten: Besserer Weg:
%Vor%