Как на jQuery изменить ссылку (a href)?

Вопрос

Как с помощью jQuery изменить атрибут href у ссылки?

Ответ №1

Следующий код заменит (или добавит) атрибут href со значением http://www.google.com/ для всех ссылок на странице.

$("a").attr("href", "http://www.google.com/");

Предположим, чисто гипотетически, что у Вас на странице есть такие теги <a></a>, у которых нет атрибута href, и Вы хотите оставить их нетронутыми, то есть только заменить атрибут href на новый, но не добавлять его. Например:

<a name="mylink">Ссылка в никуда</a>
<a href="/>Web-Answers</a>

Здесь только вторая ссылка имеет атрибут href. Если Вы выполните JavaScript в предыдущем примере, то href="http://www.google.com/" будет присвоен всем ссылкам, даже первой, у которой этого атрибута нет. Для того, чтобы выполнить действия только над «реальными» ссылками, сделаем так:

$("a[href]").attr("href", "http://www.google.com/");

Теперь предположим, что Вы хотите заменить только те ссылки, которые имеют заданное конкретное значение. Тогда Вы можете сделать что-то типа:

$("a[href=''/'']").attr(''href'', ''http://www.google.com/'');

Но такая замена сработает только в том случае, если значение атрибута href будет точно совпадать с заданным. То есть http://www.google.ru/ не равно http://www.google.ru и, естественно, не равно http://google.ru/.

Начиная с jQuery версии 1.4, attr() может принимать вторым параметром функцию для обработки атрибута. Следующий код выполниться только для ссылок, у которых есть атрибут href, а затем для каждой из них выполнится замена этого атрибута. При замене используется регулярное выражение, и в результате любой адрес, который начинается http://google.com/ (например, http://google.com/something), будет заменён просто на http://google.com/.

$("a[href]").attr(''href'', function() {
return this.replace(/^http:\/\/google\.com/, "http://google.com");
});

No responses yet

Добавить комментарий