Wenn Sie das Element onclick
nicht inline zuweisen, sehe ich keinen Grund, warum Sie nicht einfach einen Standard-Event-Handler verwenden würden. Sie können mehr über die Vorteile here lesen.
Ich würde dies vorschlagen:
$("a").click(function() {
var href = $(this).attr("href");
return goog_report_conversion(href);
});
Auch Ihre ersten beiden Codezeilen die gleiche Aufgabe durchführen, so dass Sie beide nicht benötigen. (More info here)
jQuery(function($){ ... });
// OR
$(document).ready(function() { ... });
Wenn Sie sich fragen, warum Ihr nicht funktioniert:
attr()
keine eigene this
Argumente haben.
(nach oben Tracing, der Kontext, in dem Sie es verwenden würde tatsächlich beziehen sich auf die document
, wie der Umfang von $(document).ready(...)
definiert ist)
Wenn Sie waren es, so zu tun, Sie müssten wahrscheinlich Ihre goog_report_conversion()
Funktion ändern, um einen Parameter des angeklickten Elements anstelle der href
zu akzeptieren. Ihr this
wäre in der Zeichenfolge enthalten, nicht verkettet. Mit dem übergebenen Element würden Sie die href
ähnlich wie im obigen Beispiel abrufen.
function goog_report_conversion(clicked_element) {
var href = $(clicked_element).attr("href");
//do something with href
});
$("a").attr("onclick", "return goog_report_conversion(this);");
aber sagen, dass bitte dies nicht tun.
Tun Sie das nicht. Sie sollten tatsächliche Ereignishandler verwenden. – SLaks
Nein, die Codezeile wurde noch nicht interpretiert. Also bezieht sich 'this' nicht auf das angeklickte' a'. (Wenn es das war, was Sie auch haben wollten) – JustinJmnz