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

9

我正在尝试将一个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个回答

15

正确的方式应该是(就像jQuery一样)

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

    return false;
});

这将在任何具有已跟踪ID的元素上添加“onclick”事件。在那里,您可以做任何想做的事情。单击事件发生后,第一行将把被单击元素的href属性传递给pageTracker。

至于您最初的问题,它不起作用,会引发未定义错误。attr的工作方式略有不同。请参见文档。您使用的方式将返回属性的值,并且我认为在这种情况下它不能链式调用。如果您想保持原样,它应该像这样:

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

    return false;
});

我有一个新手问题的后续,应该放在哪里?是在 <head><script ... 里面还是在 $(document).ready 内部?请澄清。 - Lord_JABA

2
你可以尝试一下

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

然后。
element1.setAttribute("onchange","functionNameAlreadyDefinedInYourScript()");   

// 我在这里尝试将元素1(一个下拉菜单)的onchange事件设置为重定向到一个函数()


1

昨天我花了一些时间在这上面。结果发现我需要在$(window).ready而不是$(document).ready中包含jQuery。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接