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

时间:2010-04-19 13:00:45

标签: javascript 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脚本,以便在页面加载时更改所有链接。< / p>

6 个答案:

答案 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;
  });
})

JSFiddle