2010-04-19 48 views
16

如何添加让我们说像ajax=1这样的东西到我的网页上的所有链接与jQuery。我还需要检查url是否有现有的参数。例如http://example.com/index.php?pl=132将成为http://example.com/index.php?pl=132&ajax=1使用jquery将参数添加到页面上的链接

而且,如果该链接没有任何参数,例如http://example.com/index.php,它将成为http://example.com/index.php?ajax=1我要加载的文件准备jQuery的脚本,使各个环节都改变了页面加载。

回答

2

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

+3

这不是他想要的。 – SLaks 2010-04-19 13:12:40

+0

@SLaks我不同意。这完成了你提供的内容,但是包裹在一个插件中,而且不那么冗长。您可以检查参数是否存在,如果不存在,添加它等。 – Sampson 2010-04-19 13:14:47

+0

这可以修改现有的超链接吗? – SLaks 2010-04-19 13:44:21

49

你可以做这样的事情:

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

document.ready这看起来在每个<a>,看着它的href,如果它包含?已经把它追加&ajax=1如果它不,它追加?ajax=1

+0

除了' /weird/page.aspx?'。另外,这对指定的锚点不起作用。 – SLaks 2010-04-19 13:05:32

+0

@SLaks - 问题是在这种情况下链接的初始渲染,而不是jQuery ... – 2010-04-19 13:07:39

+0

AFAIK,这是一个合法(但不太可能)的URL。 – SLaks 2010-04-19 13:09:43

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; 
    }); 
}) 
+1

测试了脚本。命名锚点失败。像“mysite.com/wiki/something”这样的链接不会被追加.... – Priyo 2010-04-20 03:29:19

+0

由于某些原因,这会将我的键值对追加两次?像:?key = value&key = value – stoerebink 2016-07-28 13:12:40

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; 
} 
4

这里是一个解决方案,我放在一起了原生的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/

相关问题