我正在尝试将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">
所以我的问题是这应该有效,如果没有,那么最好的解决方案是什么?
答案 0 :(得分:15)
正确的方法是(对于jQuery)
$('#tracked').click(function() {
pageTracker._link($(this).attr('href'));
return false;
});
这将在具有跟踪ID的任何元素上添加“onclick”事件。那里你可以做任何你想做的事。点击事件发生后,第一行将点击元素的href属性传递给pageTracker。
至于你原来的问题,它不会起作用,它会引发未定义的错误。 attr的工作方式有点不同。见documentation 。你使用它的方式会返回属性的值,我认为在那种情况下它不是可链接的。如果你想按照你的方式保留它,它应该是这样的:
$('#tracked').click(function() {
$(this).attr('onclick', 'pageTracker._link(this.href); return false;');
return false;
});
答案 1 :(得分:2)
您也可以尝试
var element1= document.getElementById("elementId");
然后
element1.setAttribute("onchange","functionNameAlreadyDefinedInYourScript()");
//这里我试图设置element1的onchange事件(一个下拉列表)重定向到一个函数()
答案 2 :(得分:1)
我昨天花了一些时间。事实证明,我需要在$(window)上包含jQuery .ready not $(document).ready。
$( window ).ready(function() {
$('#containerDiv a').click(function() {
dataLayer.push({
'event': 'trackEvent',
'gtmCategory': 'importantLinkSimilarProperties',
'gtmAction': 'Click',
'gtmLabel': $(this).attr('href')
});
});
});