2010-06-16 72 views
9

我想onClick事件添加到錨標記...使用jquery將onClick事件附加到錨標籤?

以前我有...

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

,但我試圖避免直列onClick事件,因爲它會干擾另一個腳本..

所以使用jQuery我試圖下面的代碼...

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

與html這樣<a id="tracked" href="something.html">

所以我的問題是這應該工作,如果不是什麼將是最好的解決方案?

回答

14

正確的方法是(如jQuery的)

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

    return false; 
}); 

這將跟蹤的ID任何元素上添加「點擊」事件。你可以做任何你想做的事。點擊事件發生後,第一行會將clicked元素的href屬性傳遞給pageTracker。

至於你原來的問題,它不會工作,它會引發未定義的錯誤。 attr的作用有點不同。見documentation。你使用它的方式會返回屬性的值,我認爲在這種情況下它不是可鏈接的。如果你想保持它,你有它的方式,它應該是這樣的:

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

    return false; 
}); 
+0

這是我的朋友......謝謝! – 2010-06-18 00:14:09

+0

有一個Noob後續問題我應該把它放在哪裏? '<腳本...',在$(document).ready'裏面?請澄清 – 2014-01-17 08:53:18

+0

裏面$(document).ready – realshadow 2014-02-10 15:07:53

2

您也可以嘗試

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

然後

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

//這裏我我試圖設置元素1(下拉列表)的onchange事件重定向到一個函數()

1

我昨天花了一些時間。事實證明,我需要在$(window).ready中包含jQuery而不是$(document).ready。

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