使用jquery将参数添加到页面上的链接

如何使用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脚本准备好文档,以便在页面加载时更改所有链接。

如果你对插件感兴趣,那就是jQuery Query String Object 。 这将允许您简单地检查查询字符串中的参数,并在必要时添加更多,删除一些或编辑其他参数。

你可以这样做:

 $(function() { $("a").attr('href', function(i, h) { return h + (h.indexOf('?') != -1 ? "&ajax=1" : "?ajax=1"); }); }); 

document.ready这会查看每个 ,看看它的href,如果它包含? 已经附加&ajax=1如果没有,它会附加?ajax=1

像这样:

 $(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; }); }) 

这是我为原生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/

考虑到上述情况,这是将参数连接到链接的最佳方法。

还要避免与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; }