2010-06-16 62 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') 
    }); 
    }); 
});