2012-01-09 273 views
0

所以我有這樣一個鏈接:修改href屬性

<a href="http://thissite.org/thisfolder/21/thispage.php"> 

我想要做的是修改,但保留它如部分:

<a href="http://thissite.org/thatfolder/21/thatpage.php"> 

可以這樣用jQuery或完成JS?

我知道我可以用jQuery取代的href屬性,但我需要離開網址(「21」)的一部分,之前和之後,它只是改變了文本。

我想也許搶href屬性,堅持在一個變量,並把它拆開,並把它重新走到一起莫名其妙。

任何幫助,這將在很大程度上讚賞。

回答

3

您可以撥打replace在屬性setter函數:

$('a').attr('href', function(index, old) { 
    return old.replace(/thisfolder/i, 'thatfolder'); 
}); 
+0

很棒的回答。我以前總是將原始屬性值存儲在一個變量中,然後將其設置爲'$('a')。attr('href',oldHref.replace(...);'。不知道你能傳遞一個在作爲第二個參數函數 – maxedison 2012-01-09 20:18:39

+0

@maxedison:是的,這是一個非常有用的功能需要注意的是,如果有多個元素,除非您調用'.each'你的方式是行不通的 – SLaks 2012-01-09 20:21:36

+0

權,我要麼做或者使用更具體的選擇器,但這只是讓你的解決方案更加優雅,我認爲這可以在任何地方完成,不需要?像'.css()'等等? – maxedison 2012-01-09 20:56:56

1

這樣做將是一個粗略的辦法:

// "elem" is the element, for example elem=document.getElementById('link_to_change') 
var url = elem.getAttribute("href").split("/"); 
url.pop(); 
url.push("thatpage.php"); 
elem.setAttribute("href",url.join("/")); 
+0

...和 ​​「thatfolder」 部分 – Stefan 2012-01-09 20:12:46

+0

是啊。好吧,我想你可以'彈出(')所有你需要的,然後'推()'他們回來,但它開始變得混亂。 – 2012-01-09 20:20:22