2010-04-19 77 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/

相關問題