2013-09-24 60 views
1

我試圖創建將選擇HTTP和_gaq(因爲很多環節有事件對他們的跟蹤),然後添加谷歌Analytics(分析)cross-domain tracking linker method所有的錨標籤的onclick功能的onclick值事件:重寫使用jQuery

 $("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成爲新的價值,所以我不知道我怎麼能有輸出值'覆蓋'舊的點擊價值?

我還創建了一個jsfiddle來說明。

感謝任何幫助或建議。

回答

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); 
}); 
0

我發現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個upvotes。切換回我的原始形式。

26票然而,這似乎並沒有工作!比較

http://jsfiddle.net/TN2wr/

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

+0

我感謝所有的文件和小提琴,但結束了@去由於簡單,Arun P Johny的答案。 – Blexy

+0

嗯,只要你不關心JavaScript中添加的事件... http://jsfiddle.net/TN2wr/2/ – Gus