【发布时间】:2010-05-14 17:49:27
【问题描述】:
当用户点击我页面上的链接时,我需要在浏览器对其进行操作之前,将参数 Hello=True 添加到 url。
因此,用户点击 MyPage.aspx 并被发送到 MyPage.ASPX?Hello=True。
必须是客户端,最好使用jQuery
如果需要,我可以为标签添加属性。
伊恩
【问题讨论】:
标签: jquery
当用户点击我页面上的链接时,我需要在浏览器对其进行操作之前,将参数 Hello=True 添加到 url。
因此,用户点击 MyPage.aspx 并被发送到 MyPage.ASPX?Hello=True。
必须是客户端,最好使用jQuery
如果需要,我可以为标签添加属性。
伊恩
【问题讨论】:
标签: jquery
如果您需要处理所有链接,请使用:
$('a').each(function() {
var href = this.href;
if (href.indexOf('?') != -1) {
href = href + '&Hello=True';
}
else {
href = href + '?Hello=True';
}
$(this).attr('href', href);
});
【讨论】:
您可以像这样更改页面上的所有链接:
$("a").each(function() {
$(this).attr("href", $(this).attr("href") + '?Hello=True'));
});
如果您想在单击超链接时使用这些添加的参数重定向用户,请使用:
$("a").click(function(e) {
e.preventDefault();
window.location.href = $(this).attr("href") + '?Hello=True';
});
【讨论】:
@Jan Willem B 版本的更简洁/更短/更好的版本:
$('a').each(function(){
var sep = (this.href.indexOf('?') != -1) ? '&' : '?';
$(this).attr('href', href + sep + 'Hello=True');
});
您也可以将语句放在一行中,牺牲可读性:
$('a').each(function(){
$(this).attr('href', href + ((this.href.indexOf('?')!=-1)?'&':'?') + 'Hello=True');
});
就是这样
【讨论】:
我尝试了@arnorhs 的更简洁的版本,虽然它更简洁、更紧凑,但有一个小的代码遗漏,因为 href 应该是 this.href:
$('a').each(function(){
var sep = (this.href.indexOf('?') != -1) ? '&' : '?';
$(this).attr('href', this.href + sep + 'Hello=True');
});
和
$('a').each(function(){
$(this).attr('href', this.href + ((this.href.indexOf('?')!=-1)?'&':'?') + 'Hello=True');
});
类似地,@Jan Willem B 的帖子中评论的更紧凑的版本有两次这个小问题,应该阅读:
$('a').each(function(){ var sep = (this.href.indexOf('?') != -1) ? '&' : '?'; $(this).attr('href', this.href + sep + 'Hello=True'); });
否则帖子和 cmets 看起来都很棒,并且(最后一个)紧凑版本运行良好(没有测试其他版本)。
注意:由于信誉点阈值,我不得不发表与评论。 HTH。
【讨论】:
这是我尝试在 url 中添加包含 url 中特定字符的参数的方法。
[jsfiddle]: http://jsfiddle.net/nasabikram/prswd16k/2/
【讨论】:
如果没有重定向,您无法使用 JavaScript 更改 URL。
你可以使用window.location=url;
你也可能想看看这个网站:http://ajaxpatterns.org/Unique_URLs
【讨论】: