Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery事件处理程序和其他处理程序?_Javascript_Jquery_Google Analytics_Jquery Events - Fatal编程技术网

Javascript jQuery事件处理程序和其他处理程序?

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(){

我正在编写一个jQuery插件,用于跟踪Google Analytics页面上的事件。我有一个简单的元素循环,每个元素都附加一个事件处理程序。它非常适用于跟踪对
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。