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 值是从滑块 = 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 回答