Peter: Parameter an .click übergeben

Guten Abend allerseits,

ich habe gerade ein bisschen herumgespielt und bin dabei auf ein kleines Problemchen gestoßen.

hier könnt ihr es auch ansehen.

Ich habe einem <div> ein Klick-Event zugewiesen. Ich möchte überprüfen, ob während des Klicks die Control-Taste (ctrl / Strg) gedrückt wird – dieser Teil der Geschichte funktioniert soweit.
Nun möchte ich aber noch, dass ich dieses Klick-Event mit einer Tastenkombination auslösen kann. Dazu nutze ich im keyup-Handler die .click() Funktion mit dem Event e als Parameter (.click(e)).
Hier kommt es nun zu dem Problem. e.ctrlKey ergiebt immer false – wenn ich es bei der Tastenkombination gedrückt habe und wenn nicht.
Ich habe mir dann mal das e in der Klick-Funktion mit console.log(e) ausgeben lassen:
[object MouseEvent]

Es hängt also mit dem .click() zusammen. Was muss ich ändern, damit es so läuft, wie ich es gerne hätte?

Peter

  1. Es hängt also mit dem .click() zusammen. Was muss ich ändern, damit es so läuft, wie ich es gerne hätte?

    Mit der .click()-Methode erzeugst du ein synthetisches Ereignis, die Parameter, die du dem Aufruf übergiebst, werden vom Browser ignoriert. Eine Lösung für dein Problem besteht darin, den Teil, der die sichtbaren Änderungen vornimmt, in eine eigene Funktion auszulagern, das erspart dir auch das jonglieren mit verschiedenen Event-Typen in einer Handler-Funktion.

    http://jsfiddle.net/8zpj7mpz/2/

    PS: Ich musste für Chrome e.key durch e.keyIdentifier ersetzen, du müsstest mal nachsehen, welche Eigenschaft hier vom Standard nahegelegt wird.

  2. @@Peter

    Ich habe einem <div> ein Klick-Event zugewiesen.

    Warum einem div? Das scheint mir nicht sinnvoll zu sein.

    LLAP 🖖

    --
    Ist diese Antwort anstößig? Dann könnte sie nützlich sein.