2011-08-02 5 views
1

私は追跡システムを作成しようとしていて、jquery noobのビットです。jqueryを使用してハイパーリンクを変更する

は私が最初のように

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

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

として、クリックを追跡するために、いくつかのページに行くことを、私自身の持つURLを交換する場合は、この

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

を持っているふり

明らかに適切なエンコーディングで。

は私が..私はのような何かを行うことができ

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

関連する問題