【问题标题】:Overwriting onclick value using jQuery使用 jQuery 覆盖 onclick 值
【发布时间】:2013-09-29 00:59:35
【问题描述】:

我正在尝试创建一个函数,该函数将选择所有带有 http 和 _gaq 的锚标记(因为很多链接都有事件跟踪),然后将 Google Analytics cross-domain tracking linker method 添加到 onclick 事件中:

        $("a[href*='http:'][onclick*='_gaq']").each(function(){
            var href = this.href;
            var onclick = $(this).attr('onclick');
            var linker = "['_link', "+ "'"+href+"'"+"],";
            var output = [onclick.substr(0,10), linker, onclick.substr(10), " return false;"].join('');

            console.log('output : '+output);
         });

当我运行它时,它会输出:

output : _gaq.push(['_link', 'http://google.com'],['_trackEvent','dude','dude','dude']); return false;

这就是我希望 onclick 的新值,所以我想知道如何让输出值“覆盖”旧的 onclick 值?

我还创建了一个jsfiddle 来说明。

感谢任何帮助或建议。

【问题讨论】:

    标签: javascript jquery html google-analytics


    【解决方案1】:

    我找到了this question,它可能会给你想要的答案:

    $("a[href*='http:'][onclick*='_gaq']").each(function(){
         var href = this.href;
         var onclick = $(this).attr('onclick');
         var linker = "['_link', "+ "'"+href+"'"+"],";
         var output = [onclick.substr(0,10), linker, onclick.substr(10), " return false;"].join('');
    
         $(this).attr('onclick','').unbind('click');  // Get rid of the old one
         var f = new Function(output);                // create a function
         $(this).click(f);                            // Add your new onclick
      });
    

    编辑:我被最近有 26 票赞成的评论误入歧途。切换回我的原始表单。

    26 票 不过好像没用!,比较一下

    http://jsfiddle.net/TN2wr/

    http://jsfiddle.net/TN2wr/1/

    【讨论】:

    • 我很欣赏所有的文档和小提琴,但由于简单,最终还是选择了@Arun P Johny 的回答。
    • 嗯,只要你不关心javascript中添加的事件...jsfiddle.net/TN2wr/2
    【解决方案2】:

    试试

    $("a[href*='http:'][onclick*='_gaq']").each(function(e){
        var href = this.href;
        var onclick = $(this).attr('onclick');
        var linker = "['_link', "+ "'"+href+"'"+"],";
        var output = [onclick.substr(0,10), linker, onclick.substr(10), " return false;"].join('');
        $(this).attr('onclick', output);
    });
    

    【讨论】:

      猜你喜欢
      • 2013-07-07
      • 1970-01-01
      • 2011-09-04
      • 2011-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多