使用 jQuery 覆盖点击值

Overwriting onclick value using jQuery

本文关键字:覆盖 jQuery 使用      更新时间:2023-09-26

我正在尝试创建一个函数,该函数将同时选择所有带有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来说明。

感谢任何帮助或建议。

尝试

$("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);
});

我发现了这个问题,它可能会得到你想要的答案:

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