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

Mat*_*ard 9 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>
Run Code Online (Sandbox Code Playgroud)

跟html一样 <a id="tracked" href="something.html">

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

rea*_*dow 15

正确的方法是(对于jQuery)

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

    return false;
});
Run Code Online (Sandbox Code Playgroud)

这将在具有跟踪id的任何元素上添加"onclick"事件.那里你可以做任何你想做的事.点击事件发生后,第一行将点击元素的href属性传递给pageTracker.

至于你原来的问题,它不会工作,它会引发未定义的错误.attr的工作方式有点不同.见文档.你使用它的方式,将返回属性的值,我认为在那种情况下它不可链接.如果您希望按照它的方式保留它,它应该如下所示:

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

    return false;
});
Run Code Online (Sandbox Code Playgroud)