Ist es immer noch möglich, dieses Objekt zu erhalten, da das Ereignisobjekt "evt" nicht vom Parameter übergeben wird?
Nein, nicht zuverlässig. IE und einige andere Browser stellen es als window.event
(nicht $(window.event)
) zur Verfügung, aber das ist nicht Standard und wird nicht von allen Browsern unterstützt (bekanntlich Firefox nicht).
Übergeben Sie das Ereignisobjekt besser an die Funktion:
<a href="#" onclick="myFunc(event, 1,2,3)">click</a>
Dies funktioniert auch in Nicht-IE-Browsern, da sie den Code in einem Kontext ausführen, der eine event
Variable enthält (und in IE, weil event
in aufgelöst wird window.event
). Ich habe es in IE6 +, Firefox, Chrome, Safari und Opera versucht. Beispiel: http://jsbin.com/iwifu4
Aber Ihre beste Wette ist , modernes Event - Handling zu verwenden:
HTML:
<a href="#">click</a>
JavaScript mit jQuery (da Sie jQuery verwenden):
$("selector_for_the_anchor").click(function(event) {
myFunc(1, 2, 3);
event.stopPropagation();
});
... oder wenn Sie wirklich passieren wollen event
in myFunc
:
$("selector_for_the_anchor").click(function(event) {
myFunc(event, 1, 2, 3);
});
Der Selektor kann alles sein, was den Anker identifiziert. Sie haben eine sehr umfangreiche Auswahl (fast alle CSS3-Dateien plus einige). Sie können dem Anker ein id
oder hinzufügen class
, aber auch hier haben Sie andere Möglichkeiten. Wenn Sie verwenden können, wo es sich im Dokument befindet, anstatt etwas Künstliches hinzuzufügen, ist das großartig.