6

重複の可能性:
jQueryを使用してhrefパラメーターを変更する

私はこのようないくつかのリンクを持つページを持っています:

<a href="playcats.php?cat='.$catname.'&sl=10" class="golink">

したがって、PHPページが読み込まれると、次のようになります。

<a href="playcats.php?cat=blue&sl=10" class="golink">
<a href="playcats.php?cat=red&sl=10" class="golink">
<a href="playcats.php?cat=yellow&sl=10" class="golink">
...

jQueryを使用してすべてのリンクのsl値のhrefを部分的に変更したい(sl値はslider = data.valueから選択されます)

私はこれを持っています:

$(document).ready(function() {
  $('a.golink').each(function() {
    var _href = $(this).attr('href'); 
    $(this).  ( rest of code.. )
  } );
});

そして今、私はそれが解決策だと思うので、正規表現で置換を使用する方法がわかりません!

4

3 に答える 3

9

あなたはするかもしれません

 $(this).attr('href', _href.replace(/sl=[^&]+/, 'sl=newval'));

の値をsl「newval」に置き換えます。

関数を使用して新しい値を構築することもできます。たとえば、古い sl 値に 2 を掛けたい場合、次のようにします。

 $(this).attr('href', _href.replace(/sl=([^&]+)/, function(_, oldval) {
      return 'sl='+(2*parseInt(oldval,10))
 }));

次の使用を避けることもできますeach

$('a.golink').attr('href', function(i, v){
  return v.replace(/sl=([^&]+)/, function(_, oldval) {
      return 'sl='+(2*parseInt(oldval,10))
  })
});

デモンストレーション(リンクを介して href を参照)

于 2013-01-13T14:14:04.283 に答える
3

attrのオーバーロードを使用して、コールバック関数を使用するのはどうですか。

$("a.golink").attr("href", function (_, val) {
    return val.replace(/sl=\d+/gi, "sl=new_value");
});

関数内では、thisが現在のタグと等しいため、<a>そこで使用する値を決定できます。

例: http: //jsfiddle.net/6zAN7/5/

于 2013-01-13T14:18:34.197 に答える
2

これを試してみてください、理解のための長いコード...

$('a').each(function(){
    // Change this to get slider value
    slider_value = 25;

    var _href = $(this).attr('href'); 
    _href = _href.split("&");
    _href[_href.length] = "sl=" + slider_value;
    _href = _href.join("&");

    console.log(_href);
});

正規表現の使用:

$('a').each(function(){
    // Change this to get slider value
    slider_value = 25;

    var _href = $(this).attr('href'); 
    _href = _href.replace(/sl=[^&]+/, 'sl=' + slider_value);
});
于 2013-01-13T14:16:48.340 に答える