我有一个包含以下几个链接的页面:
<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.. )
} );
});
现在我不知道如何使用正则表达式替换,因为我认为这是解决方案!
答案 0 :(得分:8)
你可以做
$(this).attr('href', _href.replace(/sl=[^&]+/, 'sl=newval'));
用'newval'替换sl
的值。
您还可以使用函数来构建新值。例如,假设您想要将旧的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))
})
});
Demonstration(通过链接查看href)
答案 1 :(得分:3)
如何使用带有回调函数的attr
的重载:
$("a.golink").attr("href", function (_, val) {
return val.replace(/sl=\d+/gi, "sl=new_value");
});
在函数内部,this
等于当前<a>
标记,因此您可以确定在那里使用的值。
答案 2 :(得分: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);
});