使用jquery将onClick事件附加到锚标记?

时间:2010-06-16 22:50:14

标签: javascript 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">

所以我的问题是这应该有效,如果没有,那么最好的解决方案是什么?

3 个答案:

答案 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')
    });
  });
});