リンクがいっぱいのページがあります。次のように、すべての末尾にクエリ文字列を追加しようとしています。
http://www.example.com?x=1&y=2はhttp://www.example.com?x=1&y=2&z=3になります
すべてのリンクを解析してこれを追加したい。jQueryを使用してそれを行うエレガントな方法を見つけることができないようです-どんな助けでも大歓迎です。
リンクがいっぱいのページがあります。次のように、すべての末尾にクエリ文字列を追加しようとしています。
http://www.example.com?x=1&y=2はhttp://www.example.com?x=1&y=2&z=3になります
すべてのリンクを解析してこれを追加したい。jQueryを使用してそれを行うエレガントな方法を見つけることができないようです-どんな助けでも大歓迎です。
このようなものが動作するはずです
$('a').each(function() {
$(this).prop('href',$(this).prop('href') + '&z=3');
})
a
各要素をループし、プロパティz=3
の最後に追加しますhref
あなたができる:
$("a").attr('href', function(c, b) {
return b + "&z=3";
});
$('a[href^="http://www.example.com"]').prop('href', function(i, href){
return href + '&z=3';
})
これでうまくいくはずです。
$('a').each(function(){
this = $this;
curr_url = this.attr('href');
this.attr('href', 'curr_url' + '&z=3');
});
キーと値のペアを追加する前に、 this.attr('href').indexOf('?') > -1 を確認する必要があります。「?」がない場合 それも追加する必要があります。
おそらく、javascript でネイティブの href API を使用して URL を解析し、必要なビットを URL の変更が必要な部分に追加することをお勧めします。
http://james.padolsey.com/javascript/parsing-urls-with-the-dom/
おそらく、「on」イベントトリガー (jQuery latest) を使用してこれを行うことも検討する必要があります。DOM の拡張は、多数の要素に対して行うと遅くなり、onLoad フックに追加するとページ表示が遅くなります。
$('body').on('click','a',function(e){
// Prevent it jumping straight out
e.preventDefault;
// Define vars
var href = this.href,
qstr = 'a=b&bar=foo';
// check for structure of url and add query string
this.href += ((href.indexOf('?') > -1) ? '&': '?') + qstr;
// jump
return true;
});