我现在正在学习jquery。我想在页面加载时用另一个 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。我如何在页面加载时做到这一点?
你需要知道旧的价值观吗?如果不是,您不能按照以下方式做一些事情(假设所有链接都具有相同的查询字符串并且如果不是这种情况则需要扩展):
$(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
另外,我同意评论者对您的问题的看法-虽然有可能,但不建议这样做:)
尝试使用jQuery BBQ插件。它使处理查询字符串的问题大大减少。
我想你会想试试
$(document).ready(function(){
$.param.querystring($(".changeparam").attr("href"), {i:123, p:456, s:789})
});
它有很多很酷的东西来处理查询字符串,你不必在这里重新发明轮子。