如何用jquery替换锚链接的参数?

时间:2012-04-26 15:11:00

标签: jquery url href

我正在学习jquery。我想在页面加载时用另一个url替换url的参数。例如,这是我的代码

 <div class="changeparam">
<a href="http://demo.org/post.php?i=123&p=456&s=789">Link</a>
 </div> 

现在我需要将参数i,p和s的值分别改为不同的值,分别为abc,def,ghi。如何在页面加载时执行此操作?

2 个答案:

答案 0 :(得分:3)

你需要知道旧的价值吗?如果不能,你就不能按照以下方式做一些事情(这假设所有链接都具有相同的查询字符串并且如果不是这样的话需要扩展):

$(document).ready( function ( ) {
    // Get the full address from the original link
    var old_fulladdr = $('div.changeparam a').attr('href');

    // split it to get the actual file address
    var old_addr_parts = old_fulladdr.split('?');

    // This may need something more complex...
    var new_querystring = 'i=abc&p=def&g=ghi';

    // This changes the href of the link to the new one.
    $('div.changeparam a').attr('href',old_addr_parts[0] + '?' + new_querystring);

});​

更新:  我创建了一个更灵活的函数,它接受一个查询字符串,一个要替换的项目数组和一个替换值数组然后输出一个新的查询字符串。看看这个jsfiddle:http://jsfiddle.net/LWzZR/1

另外,我同意你提问的评论者 - 虽然有可能,但不推荐:)

答案 1 :(得分:1)

尝试使用jQuery BBQ插件。它使得处理查询字符串成为一个问题。

我想你想尝试

$(document).ready(function(){
    $.param.querystring($(".changeparam").attr("href"), {i:123, p:456, s:789})
});

操纵querystrings有很多很酷的东西,你不必在这里重新发明轮子。