如何使用jquery向我的页面上的所有链接添加类似ajax=1
的内容。我还需要检查url是否有现有参数。例如,http://example.com/index.php?pl=132
必须成为http://example.com/index.php?pl=132&ajax=1
此外,如果链接没有任何参数,例如http://example.com/index.php
,它将变为http://example.com/index.php?ajax=1
我想在文档就绪上加载jQuery脚本,以便在页面加载时更改所有链接。< / p>
答案 0 :(得分:53)
你可以这样做:
$(function() {
$("a").attr('href', function(i, h) {
return h + (h.indexOf('?') != -1 ? "&ajax=1" : "?ajax=1");
});
});
在document.ready
上查看每个<a>
,查看它的href,如果它包含?
已经附加&ajax=1
,如果没有,则附加?ajax=1
1}}。
答案 1 :(得分:5)
像这样:
$(function() {
$('a[href]').attr('href', function(index, href) {
var param = "key=value";
if (href.charAt(href.length - 1) === '?') //Very unlikely
return href + param;
else if (href.indexOf('?') > 0)
return href + '&' + param;
else
return href + '?' + param;
});
})
答案 2 :(得分:5)
这是我为原生Javascript组合的解决方案,它支持现有的查询字符串和锚点:
function addToQueryString(url, key, value) {
var query = url.indexOf('?');
var anchor = url.indexOf('#');
if (query == url.length - 1) {
// Strip any ? on the end of the URL
url = url.substring(0, query);
query = -1;
}
return (anchor > 0 ? url.substring(0, anchor) : url)
+ (query > 0 ? "&" + key + "=" + value : "?" + key + "=" + value)
+ (anchor > 0 ? url.substring(anchor) : "");
}
我已经在JSBin上发布了我现有的测试:http://jsbin.com/otapem/2/
答案 3 :(得分:2)
如果你对插件感兴趣,那就是jQuery Query String Object。这将允许您简单地检查查询字符串中的参数,并在必要时添加更多,删除一些或编辑其他参数。
答案 4 :(得分:2)
采用上述内容,这是将参数连接到链接的最佳方法。
还要避免与href链接,例如href =“Javascript:YourFunction();”
$(function(){
var myRandom = getRandom();
$('a[href]').each(function(i){
var currHref = $(this).attr("href");
var isAfunction = currHref.substring(0,10);
if(isAfunction == "javascript"){
$(this).attr("href",currHref);
}else{
if (currHref.charAt(currHref.length - 1) === '?')
$(this).attr("href",currHref);
else if (currHref.indexOf('?') > 0)
$(this).attr("href",currHref+"&rand="+getRandom());
else
$(this).attr("href",currHref+"?rand="+getRandom());
}
});
});
function getRandom(){
var randomnumber = Math.floor(Math.random()*10000);
return randomnumber;
}
答案 5 :(得分:0)
a href必须是完整且更正的URL。
$(function() {
$('a[href]').attr('href', function(index, href) {
var url = new URL(href);
url.searchParams.set('ajax',1);
return url;
});
})