2012-01-09 4 views
0

Так у меня есть ссылка, как это:пересматривают HREF атрибута

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

То, что я хочу сделать, это пересмотреть его, но сохранить его часть, например:

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

Может ли это быть сделано с Jquery или JS?

Я знаю, что я могу заменить свойство href на jquery, но мне нужно оставить часть URL-адреса («21») и просто изменить текст до и после него.

Я думал, может быть, захватить свойство href, вставить его в переменную и разобрать и как-то вернуть его обратно.

Любая помощь с этим будет в значительной степени оценена.

ответ

3

Вы можете позвонить replace в функции свойство сеттер:

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

Отличный ответ. Я всегда сохранял исходное значение атрибута в переменной, а затем устанавливал его как '$ ('a'). Attr ('href', oldHref.replace (...);'. Не знал, что вы можете передать функция в качестве второго аргумента – maxedison

+0

@maxedison: Да, это очень полезная функция. Обратите внимание, что ваш путь не будет работать, если есть несколько элементов, если вы не назовете '.each'. – SLaks

+0

Правильно, я либо сделаю это или использовать более специфический селектор, но это просто делает ваше решение более элегантным. Я предполагаю, что это можно сделать почти везде, нет? Как в '.css()' и т. д. – maxedison

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

+0

Ах да. Ну, я думаю, вы могли бы «pop»() «все те, которые вам нужны», а затем «push()» их обратно, но потом он начинает запутываться. –

Смежные вопросы