JavaScript检查委托链接上的任何绑定或冒泡事件

JavaScript检查委托链接上的任何绑定或冒泡事件,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我有一些跟踪代码,可以执行以下操作,并绑定到所有标签上的单击事件(setTimeout是根据Google网站上的建议设置的,我想这是允许在卸载事件之前触发跟踪事件所必需的): 问题是,我们的站点上有数百个链接,其中一些实际上没有重新加载任何内容(例如,对话框关闭按钮),因此我需要setTimeout仅在没有绑定到元素(或DOM树上)的JS事件时运行。我提出了上面的if语句,我认为它解释了所有可能的绑定事件(代码库跨越了几年,因此可能存在各种各样的愚蠢)。其他人是否有更好的方法来执行此操作,或者我

我有一些跟踪代码,可以执行以下操作,并绑定到所有
标签上的单击事件(setTimeout是根据Google网站上的建议设置的,我想这是允许在卸载事件之前触发跟踪事件所必需的):

问题是,我们的站点上有数百个链接,其中一些实际上没有重新加载任何内容(例如,对话框关闭按钮),因此我需要setTimeout仅在没有绑定到元素(或DOM树上)的JS事件时运行。我提出了上面的if语句,我认为它解释了所有可能的绑定事件(代码库跨越了几年,因此可能存在各种各样的愚蠢)。其他人是否有更好的方法来执行此操作,或者我是否遗漏了一些可能的事件检查

更新:这可能是关键,我应该在前面提到它。上面的函数是以委托的方式调用的,因此父div中的事件实际上首先触发(因此我需要检测它们)


请看这个相关问题:我感谢您的输入,但请注意关于冒泡事件的部分。如果this.data('events')适用于所有情况,我就不会在那里进行另外两次检查。在另一个关于内联处理程序的问题中也有一个尖刻的评论,但不幸的是,我没有对它们大惊小怪的奢侈——它们在一堆遗留代码中,我需要处理它们。在jQuery的一篇博客文章中,有人提到,在未来的jQuery版本中,将删除/更改事件绑定存储在
数据中。
$.fn.trackClick = function (e) {
    // track the click
    try {
        _gaq.push(['_trackEvent', 'clicked-link', this.parents('[id]:first').get(0).id, (this.text() || this.children('img:first').attr('alt'))]);
    } catch (err) {}

    //only reload links with no bound events
    if (!this.data('events') && !this.get(0).onclick && !e.isDefaultPrevented()) {
        // wait a moment for the tracking to process, then follow the link
        setTimeout('document.location = "' + $(this).attr('href') + '"', 200);
    }
}
jQuery(document).delegate('a', 'click', function(e){
  e.preventDefault();
  $(this).trackClick();
});