当用户点击我页面上的链接时,我需要在浏览器执行操作之前,将该参数Hello = True添加到网址。
因此,用户单击MyPage.aspx并将其发送到MyPage.ASPX?Hello = True。
必须是客户端,最好使用jQuery
如果需要,我可以为标签添加属性。
伊恩
答案 0 :(得分:11)
如果您需要操纵所有链接,请使用:
$('a').each(function() {
var href = this.href;
if (href.indexOf('?') != -1) {
href = href + '&Hello=True';
}
else {
href = href + '?Hello=True';
}
$(this).attr('href', href);
});
答案 1 :(得分:10)
您可以更改网页上的所有链接:
$("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';
});
答案 2 :(得分:4)
@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');
});
就是那个
答案 3 :(得分:0)
我尝试了@arnorhs的清洁版本,虽然它更干净,更紧凑,但由于href应该是this.href,因此会有一些细微的代码遗漏:
<1.7> (/usr/lib/jvm/java-1.7.0-openjdk-amd64)
和
$('a').each(function(){
var sep = (this.href.indexOf('?') != -1) ? '&' : '?';
$(this).attr('href', this.href + sep + 'Hello=True');
});
在类似的情况下,在@Jan Willem B的帖子中评论的更紧凑的版本有两次这个小问题,应该阅读:
$('a').each(function(){
$(this).attr('href', this.href + ((this.href.indexOf('?')!=-1)?'&':'?') + 'Hello=True');
});
否则,帖子和评论看起来都很棒,而且(最后)紧凑版本效果很好(没有测试其他版本)。
注意:由于声誉点阈值,我不得不发表评论。 HTH。
答案 4 :(得分:0)
以下是我尝试在url中添加包含url中特定字符的参数的内容。
[jsfiddle]: http://jsfiddle.net/nasabikram/prswd16k/2/
答案 5 :(得分:-1)