Possible Duplicate:
Change href parameter using jQuery
I have a page with several links like this:
<a href="playcats.php?cat='.$catname.'&sl=10" class="golink">
So after PHP page loads it will look like:
<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">
...
I want partially change the href for the sl value of all links using jQuery (sl value is picked from a slider = data.value)
I have this:
$(document).ready(function() {
$('a.golink').each(function() {
var _href = $(this).attr('href');
$(this). ( rest of code.. )
} );
});
And now I do not know how to use replace with regular expressions as I think it is the solution!
You might do
$(this).attr('href', _href.replace(/sl=[^&]+/, 'sl=newval'));
to replace the value of sl
by 'newval'.
You can also use a function to build the new value. For example, say you want to multiply by 2 the old sl value, you may do this :
$(this).attr('href', _href.replace(/sl=([^&]+)/, function(_, oldval) {
return 'sl='+(2*parseInt(oldval,10))
}));
You may even avoid using each
:
$('a.golink').attr('href', function(i, v){
return v.replace(/sl=([^&]+)/, function(_, oldval) {
return 'sl='+(2*parseInt(oldval,10))
})
});
Demonstration (over the links to see the href)
How about using the overload of attr
that takes a callback function:
$("a.golink").attr("href", function (_, val) {
return val.replace(/sl=\d+/gi, "sl=new_value");
});
Inside of the function, this
is equal to the current <a>
tag, so you could determine what value to use there.
Example: http://jsfiddle.net/6zAN7/5/
Try this, long code for understanding...
$('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);
});
Using regex:
$('a').each(function(){
// Change this to get slider value
slider_value = 25;
var _href = $(this).attr('href');
_href = _href.replace(/sl=[^&]+/, 'sl=' + slider_value);
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With