添加点击处理程序every链接是这不是一个好主意。您应该使用事件委托(它只会附加one事件处理程序位于文档的根目录):
$(document).delegate('a', 'click', function(event) {
// logging
});
更新(2011 年 12 月 17 日):
Since jQuery 1.7, one would use .on() [docs]:
$(document).on('click', 'a', function(event) {
// logging
});
关于您的问题:
开发人员可能在锚链接内有图像,因此事件目标是图像而不是 href
只要传播不被取消,事件就会冒泡。这取决于您想要记录的内容。和delegate
the event.target
属性将指向图像,但是this
(在处理程序内部)将指向a
元素。
所以你在这里应该没有问题(例如:http://jsfiddle.net/cR4DE/).
但这也意味着如果开发人员取消传播,您将错过点击。
(边注:您可以解决这个问题,让事件处理程序在捕获阶段,但 IE 不支持这一点(因此 jQuery 也不支持)。)
许多开发人员都有自己的处理 href click 的方法,使用 onclick 事件而不是简单的 href='' attr
这不会触及现有的事件处理程序。
一些开发人员将自定义 attr , 添加到标签中,并具有自定义函数来处理点击
不确定你在这里的意思。
它还取决于如何包含其他内容。例如。上面的代码不会跟踪 iframe 中的点击。