1

我正在尝试创建一个函数,该函数将选择所有带有 http 和 _gaq 的锚标记(因为很多链接都有事件跟踪),然后将 Google Analytics跨域跟踪链接器方法添加到 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来说明。

感谢任何帮助或建议。

4

2 回答 2

2

Try

$("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-09-24T00:43:49.447 回答
0

我发现这个问题可能会给你你想要的答案:

$("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/

于 2013-09-24T00:48:46.793 回答