Javascript jQuery事件处理程序和其他处理程序?
我正在编写一个jQuery插件,用于跟踪Google Analytics页面上的事件。我有一个简单的元素循环,每个元素都附加一个事件处理程序。它非常适用于跟踪对Javascript jQuery事件处理程序和其他处理程序?,javascript,jquery,google-analytics,jquery-events,Javascript,Jquery,Google Analytics,Jquery Events,我正在编写一个jQuery插件,用于跟踪Google Analytics页面上的事件。我有一个简单的元素循环,每个元素都附加一个事件处理程序。它非常适用于跟踪对div等的点击 $('a.tracked').tracking(); (function( $ ) { $.fn.tracking = function() { return this.each(function() { $(this).on('click', function(){
div
等的点击
$('a.tracked').tracking();
(function( $ ) {
$.fn.tracking = function() {
return this.each(function() {
$(this).on('click', function(){
ga('send', 'event', 'category', 'action', 'label', 'value');
});
});
};
}( jQuery ));
不过,跟踪在链接上不起作用,因此我添加了一个测试,将默认行为延迟到跟踪回调发生:
(function($) {
$.fn.tracking = function() {
return this.each(function() {
$(this).on('click', function(event){
if ($(this).prop('tagName')=='A'){
event.preventDefault();
var url = $(this).attr('href');
ga('send', 'event', 'category', 'action', 'label', 'value', {'hitCallback':function(){
document.location = url;
}});
}else{
ga('send', 'event', 'category', 'action', 'label', 'value');
}
});
});
};
}( jQuery ));
工作也很棒!但是,我希望跟踪已经有事件处理程序的“更聪明”的链接,例如lightbox或web应用程序链接
this.each(function(){
在您的代码中是冗余的,仅供参考。this.on(…
将执行相同的递归。1:no.2:取决于它们的绑定时间。如果它们都是在document ready中完成的,您可以使用名为“holdReady”的jquery插件,否则您必须逐个处理。3:dunno。