2010-06-16 8 views
9

Ich versuche, ein OnClick-Ereignis zu einem Anker-Tag ...Ein onClick-Ereignis an ein Anker-Tag mit jquery anhängen?

Zuvor hinzufügen hatte ich ...

<a href="somlink.html" onClick="pageTracker._link(this.href); return false;">

Aber ich versuche, das Inline-OnClick-Ereignis zu vermeiden, weil es mit stört ein anderes Skript ..

So jQuery ich mit dem folgenden Code versuchen ...

<script> 
    $(document).ready(function() { 
     $('a#tracked').attr('onClick').click(function() {window.onbeforeunload = null; 
     pageTracker._link(this.href); 
     return false; 
     }); 
    }); 
</script> 

mit dem html so <a id="tracked" href="something.html">

Also meine Frage ist, sollte dies funktionieren, und wenn nicht, was wäre die beste Lösung?

Antwort

14

Der richtige Weg wäre (wie jQuery) sein

$('#tracked').click(function() { 
    pageTracker._link($(this).attr('href')); 

    return false; 
}); 

Dies wird eine "Onclick" Ereignis auf ein beliebiges Element mit getrackten id hinzuzufügen. Dort können Sie alles tun, was Sie wollen. Nach dem Klickereignis wird in der ersten Zeile das href-Attribut des angeklickten Elements an pageTracker übergeben.

Wie für Ihre ursprüngliche Frage, es würde nicht funktionieren, wird es undefined Fehler zu erhöhen. Der Attr wirkt ein bisschen anders. Siehe documentation. Die Art, wie Sie es verwendet haben, würde den Wert des Attributs zurückgeben und ich denke, dass in diesem Fall es nicht verkettet ist. Wenn Sie möchten, dass es den Weg halten Sie es hatte, sollte es so aussehen:

$('#tracked').click(function() { 
    $(this).attr('onclick', 'pageTracker._link(this.href); return false;'); 

    return false; 
}); 
+0

Dies tat es mein Freund ... danke! –

+0

Got a Noob Follow-up Frage, wo soll ich es sagen? In '

+0

Inside $ (Dokument) .ready – realshadow

2

Sie auch

var element1= document.getElementById("elementId"); 

versuchen und dann

element1.setAttribute("onchange","functionNameAlreadyDefinedInYourScript()"); 

// hier i Ich versuche, das Onchange-Ereignis von Element1 (ein Dropdown) auf eine Funktion() umleiten zu setzen.

1

Ich verbrachte einige Zeit auf diesem gestern. Es stellte sich heraus, dass ich die jQuery in $ (window) .ready not $ (document) .ready einbinden musste.

$(window).ready(function() { 
    $('#containerDiv a').click(function() { 
    dataLayer.push({ 
     'event': 'trackEvent', 
     'gtmCategory': 'importantLinkSimilarProperties', 
     'gtmAction': 'Click', 
     'gtmLabel': $(this).attr('href') 
    }); 
    }); 
}); 
Verwandte Themen