如何用jquery替换锚链接的参数?
Posted
技术标签:
【中文标题】如何用jquery替换锚链接的参数?【英文标题】:how to replace the parameters of an anchor link with jquery? 【发布时间】:2012-05-07 08:28:33 【问题描述】:我现在正在学习 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。如何在页面加载时做到这一点?
【问题讨论】:
虽然这是可能的,但并不理想。 Url 在哪里生成?你不能在那个级别改变它吗? @RoryMcCrossan:可以在 URL 生成级别更改。但问题是我们必须缓存页面内容。所以下次另一个用户加载内容时,缓存会被加载。因此,这可能会导致传递有关用户和内容的错误信息。 在这种情况下,您应该考虑修复您的缓存系统。 @RoryMcCrossan:你有什么建议吗?如何替换缓存文件中的参数? 【参考方案1】:尝试使用jQuery BBQ 插件。它使处理查询字符串的问题大大减少。
我想你会想试试
$(document).ready(function()
$.param.querystring($(".changeparam").attr("href"), i:123, p:456, s:789)
);
它有很多很酷的东西来处理查询字符串,你不必在这里重新发明***。
【讨论】:
【参考方案2】:您需要了解旧值吗?如果不是,你不能按照以下方式做一些事情(假设所有链接都具有相同的查询字符串,如果不是这种情况,则需要扩展):
$(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
另外,我同意评论者对您的问题的看法 - 虽然有可能,但不推荐 :)
【讨论】:
我不需要旧参数。我只想在页面加载时刷新参数。如果我只想刷新一个参数怎么办? 给我5分钟,我会拉小提琴的。 谢谢。请考虑该选项,以便在需要时我可以保持“i”的值相同并仅更改“p”和“s”。 请查看我刚刚在答案中链接的 jsfiddle。 非常感谢。那个小提琴奏效了。现在的问题是我的站点中有多个这样的 div,它们都具有相同的类名。现在,当我运行 jquery 脚本时,它会将所有链接替换为第一个链接。如何为单个链接运行它?以上是关于如何用jquery替换锚链接的参数?的主要内容,如果未能解决你的问题,请参考以下文章