0

リンクがいっぱいのページがあります。次のように、すべての末尾にクエリ文字列を追加しようとしています。

http://www.example.com?x=1&y=2http://www.example.com?x=1&y=2&z=3になります

すべてのリンクを解析してこれを追加したい。jQueryを使用してそれを行うエレガントな方法を見つけることができないようです-どんな助けでも大歓迎です。

4

5 に答える 5

2

このようなものが動作するはずです

$('a').each(function() {
  $(this).prop('href',$(this).prop('href') + '&z=3');
})

a各要素をループし、プロパティz=3の最後に追加しますhref

于 2013-02-08T11:10:28.333 に答える
1

あなたができる:

$("a").attr('href', function(c, b) {
     return b + "&z=3";
});
于 2013-02-08T11:11:12.407 に答える
1
$('a[href^="http://www.example.com"]').prop('href', function(i, href){
   return href + '&z=3';
})
于 2013-02-08T11:13:19.503 に答える
0

これでうまくいくはずです。

$('a').each(function(){
  this = $this;
  curr_url = this.attr('href');
  this.attr('href', 'curr_url' + '&z=3');
});
于 2013-02-08T11:11:48.563 に答える
0

キーと値のペアを追加する前に、 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;
});
于 2013-02-08T11:14:13.760 に答える