2011-08-02 195 views
1

我正在試圖製作一個跟蹤系統,並且是一些jquery noob。使用jquery更改超鏈接

假裝我有這個

<div class="ads"> 
<a href="http://www.google.com">Google</a> 
<a href="http://www.stackoverflow.com">Stack Overflow</a> 
</div> 

我想用我自己更換網址,首先去一些頁面跟蹤點擊,如

http://www.mysite.com/TrackClick/?url=http://www.google.com

http://www.mysite.com/TrackClick/?url=http://www.stackoverflow.com

很明顯,正確的編碼。

我想我可以做這樣的事情..

$(".ads").find("a").attr("href", "http://www.mysite.com/TrackClick/?" + $(this).attr("href")); 

,但不工作...我真的不知道爲什麼

感謝您的幫助。

+1

要知道,用戶無需啓用JavaScript將不被跟蹤,但我猜你已經想到這個問題:) – Phil

回答

2

這個沒有指向你的代碼中的鏈接。

你可以使用一個函數來設置該屬性:

$(".ads") 
.find("a") 
.attr("href", function(i,a) 
       {return "http://www.mysite.com/TrackClick/?"+encodeURIComponent(a)}); 
0

試試這個:

$(".ads a").each(function() { 
    $(this).attr("href", "http://www.mysite.com/TrackClick/?" + $(this).attr("href")); 
}); 

你需要遍歷的選擇來改變相對屬性自己,.each方法確實是:)

0

我的工作代碼:

http://jsfiddle.net/ZAhkK/

$('.ads a').each(function(){ 
    $(this).attr('href', 'http://www.mysite.com/TrackClick/?' + $(this).attr('href')); 
}); 
+0

這是不一樣的,他的代碼張貼,你應該說這是一個修復:P PS打你30秒:D –

+0

哈哈,是的意思是改變它,但是你做到了:O – MacMac

0

的原因是this是不是ATTR()函數內部deffined。

改用.each()函數。

$(".ads a").each(function(){ 
    $(this).attr('href', 'http://www.mysite.com/TrackClick/?' + $(this).attr('href')); 
}); 

看看

http://jsfiddle.net/H34yX/1/