2012-01-09 115 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