2013-01-13 51 views
5

可能重复:
Change href parameter using jQueryjQuery替换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"> 
... 

我想部分更改为HREF使用jQuery的所有链接的SL值(SL值从滑块= data.value采摘)

我有这样的:

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

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

+0

你的第一个环节,它是通过一个循环获取打印? –

回答

7

你可能会做

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

以取代 '的newval' 的的sl值。

您还可以使用函数来构建新值。例如,假设你想通过2乘以旧SL值,你可以这样做:

$(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)) 
    }) 
}); 

Demonstration(通过链接查看HREF )

+0

如此伟大的故事! ...完美地工作。 此外,还有很多感谢这里展示的额外功能,对我的项目也可能有用。 谢谢! –

+0

@PedroP另请参阅我给出的第三个解决方案,避免每个解决方案。 –

+0

ty再次破坏,你认为更好地使用第三种解决方案,而不是每种方式? –

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); 
}); 
3

如何使用attr,需要一个回调函数的重载:

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

里面的功能,this等于当前<a>标签,所以你可以决定什么在那里使用的价值。

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