jQuery替换href值但只是部分?

Ped*_*o P 5 javascript regex jquery replace href

可能重复:
使用jQuery更改href参数

我有一个页面,其中包含以下几个链接:

<a href="playcats.php?cat='.$catname.'&sl=10" class="golink">
Run Code Online (Sandbox Code Playgroud)

所以在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">
...
Run Code Online (Sandbox Code Playgroud)

我想使用jQuery部分更改所有链接的sl值的href(sl值从slider = data.value中选取)

我有这个:

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

现在我不知道如何使用正则表达式替换,因为我认为它是解决方案!

Den*_*ret 8

你可能会这样做

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

替换sl'newval' 的值.

您还可以使用函数来构建新值.例如,假设您想要将旧的sl值乘以2,您可以这样做:

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

你甚至可以避免使用each:

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

演示(通过链接查看href)