Ich brauche einen Handler für das aufrufende Objekt des onclick
Ereignisses.
<a href="123.com" onclick="click123(event);">link</a>
<script>
function click123(event) {
//i need <a> so i can manipulate it with Jquery
}
</script>
Ich möchte dies ohne die Verwendung von $().click
oder $().live
von jQuery tun, aber mit der oben beschriebenen Methode.
javascript
jquery
html
Konstantinos
quelle
quelle
if (!e) var e = window.event;
ist etwas überflüssig -e
ist bereits deklariert, warum nochmal?if
kann auch insgesamt zugunsten eines kürzeren ternären - vermieden werdene = e || window.event
. Das Gleiche gilt füre.target
- diese 3 Zeilen können leicht durch -var target = e.target || e.srcElement
;)e= e || window.event
ein ternärer Operator ist, da es nicht drei Argumente gibt, sondern zwei, es ist einlogical-or/default
Operator - javascript.crockford.com/survey.html . Aber ich nehme den Punkt, es sieht ordentlicher aus und ich benutze es normalerweise. Ich habe einfach den Code aus dem verlinkten Artikel eingefügt, werde aber jetzt meine Antwort veröffentlichen :)Am einfachsten ist es, dies an die Funktion click123 zu übergeben, oder Sie können auch Folgendes tun (browserübergreifend):
function click123(e){ e = e || window.event; var src = e.target || e.srcElement; //src element is the eventsource }
quelle
http://docs.jquery.com/Events/jQuery.Event
Versuche es mit
event.target
quelle
Ich denke, der beste Weg ist, die currentTarget- Eigenschaft anstelle der target- Eigenschaft zu verwenden.
Zum Beispiel:
<a href="#"><span class="icon"></span> blah blah</a>
Javascript:
a.addEventListener('click', e => { e.currentTarget; // always returns "a" element e.target; // may return "a" or "span" })
quelle
Die Sache mit Ihrer Methode ist, dass Sie Ihr HTML mit Javascript überladen. Wenn Sie Ihr Javascript in eine externe Datei einfügen, können Sie unauffällig auf Ihr HTML zugreifen, und das ist viel ordentlicher.
Später können Sie Ihren Code mit addEventListener / attackEvent (IE) erweitern, um Speicherverluste zu vermeiden.
Dies ist ohne jQuery
<a href="123.com" id="elementid">link</a> window.onload = function () { var el = document.getElementById('elementid'); el.onclick = function (e) { var ev = e || window.event; // here u can use this or el as the HTML node } }
Sie sagen, Sie möchten es mit jQuery bearbeiten. Sie können also jQuery verwenden. Dann ist es noch besser, es so zu machen:
// this is the window.onload startup of your JS as in my previous example. The difference is // that you can add multiple onload functions $(function () { $('a#elementid').bind('click', function (e) { // "this" points to the <a> element // "e" points to the event object }); });
quelle