Как изменить href для гиперссылки, используя jQuery - PullRequest
1190 голосов
/ 07 октября 2008

Как вы можете изменить href для гиперссылки, используя jQuery?

Ответы [ 11 ]

1729 голосов
/ 07 октября 2008

Использование

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

изменит ссылку на все гиперссылки, чтобы они указывали на Google. Вы, вероятно, хотите несколько более изысканный селектор, хотя. Например, если у вас есть сочетание тегов привязки источника ссылки (гиперссылка) и цели ссылки (a.k.a. "anchor"):

<a name="MyLinks"></a>
<a href="http://www.codeproject.com/">The CodeProject</a>

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

$("a[href]") //...

Конечно, вы, вероятно, будете иметь в виду нечто более интересное. Если вы хотите сопоставить привязку с конкретным существующим href, вы можете использовать что-то вроде этого:

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

Здесь будут найдены ссылки, в которых href точно соответствует строке http://www.google.com/. Более сложная задача может соответствовать, затем обновлять только часть href:

$("a[href^='http://stackoverflow.com']")
   .each(function()
   { 
      this.href = this.href.replace(/^http:\/\/beta\.stackoverflow\.com/, 
         "http://stackoverflow.com");
   });

Первая часть выбирает только ссылки, где href начинается с с http://stackoverflow.com. Затем определяется функция, которая использует простое регулярное выражение для замены этой части URL-адреса новой. Обратите внимание на гибкость, которую это дает вам - здесь можно выполнить любую модификацию ссылки.

274 голосов
/ 14 июня 2011

С jQuery 1.6 и выше вы должны использовать:

$("a").prop("href", "http://www.jakcms.com")

Разница между prop и attr заключается в том, что attr получает атрибут HTML, тогда как prop получает свойство DOM.

Вы можете найти более подробную информацию в этом сообщении: .prop () vs .attr ()

73 голосов
/ 07 октября 2008

Используйте метод attr в вашем поиске. Вы можете отключить любой атрибут с новым значением.

$("a.mylink").attr("href", "http://cupcream.com");
38 голосов
/ 17 октября 2008

В зависимости от того, хотите ли вы поменять все идентичные ссылки на что-то еще, или вы хотите контролировать только те, которые находятся в данном разделе страницы, или каждую по отдельности, вы можете сделать одну из них.

Измените все ссылки на Google, чтобы они указывали на Карты Google:

<a href="http://www.google.com">

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

Чтобы изменить ссылки в данном разделе, добавьте класс контейнера div в селектор. Этот пример изменит ссылку Google в контенте, но не в нижнем колонтитуле:

<div class="content">
    <p>...link to <a href="http://www.google.com/">Google</a>
    in the content...</p>
</div>

<div class="footer">
    Links: <a href="http://www.google.com/">Google</a>
</div>

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

Чтобы изменить отдельные ссылки независимо от того, где они находятся в документе, добавьте идентификатор в ссылку, а затем добавьте этот идентификатор в селектор. В этом примере будет изменена вторая ссылка Google в контенте, но не первая или та, что в нижнем колонтитуле:

<div class="content">
    <p>...link to <a href="http://www.google.com/">Google</a>
    in the content...</p>
    <p>...second link to <a href="http://www.google.com/" 
        id="changeme">Google</a>
    in the content...</p>
</div>

<div class="footer">
    Links: <a href="http://www.google.com/">Google</a>
</div>

$("a#changeme").attr('href', 
'http://maps.google.com/');
33 голосов
/ 19 января 2015

Даже несмотря на то, что ОП явно запрашивает ответ jQuery, вам не нужно использовать jQuery для всего в наши дни.

Несколько методов без jQuery:

  • Если вы хотите изменить href значение всех <a> элементов, выберите их все, а затем выполните итерации по нодлисту : (пример)

    var anchors = document.querySelectorAll('a');
    Array.prototype.forEach.call(anchors, function (element, index) {
        element.href = "http://stackoverflow.com";
    });
    
  • Если вы хотите изменить значение href всех элементов <a>, которые фактически имеют атрибут href, выберите их, добавив селектор атрибута [href] (a[href]): (пример)

    var anchors = document.querySelectorAll('a[href]');
    Array.prototype.forEach.call(anchors, function (element, index) {
        element.href = "http://stackoverflow.com";
    });
    
  • Если вы хотите изменить href значение <a> элементов, которые содержат конкретное значение, например google.com, используйте селектор атрибутов a[href*="google.com"]: * +1047 * (пример) * 1 048 *

    var anchors = document.querySelectorAll('a[href*="google.com"]');
    Array.prototype.forEach.call(anchors, function (element, index) {
        element.href = "http://stackoverflow.com";
    });
    

    Также вы можете использовать другие селекторы атрибутов . Например:

    • a[href$=".png"] может использоваться для выбора <a> элементов, значение href которых заканчивается на .png.

    • a[href^="https://"] может использоваться для выбора <a> элементов с href значениями, которые имеют префикс с https://.

  • Если вы хотите изменить href значение <a> элементов, которые удовлетворяют нескольким условиям: (пример)

    var anchors = document.querySelectorAll('a[href^="https://"], a[href$=".png"]');
    Array.prototype.forEach.call(anchors, function (element, index) {
        element.href = "http://stackoverflow.com";
    });
    

.. нет необходимости в регулярных выражениях, в большинстве случаев.

9 голосов
/ 10 декабря 2010

Этот фрагмент вызывается при нажатии на ссылку класса «menu_link» и показывает текст и URL-адрес ссылки. Возвращаемое значение false не позволяет перейти по ссылке.

<a rel='1' class="menu_link" href="option1.html">Option 1</a>
<a rel='2' class="menu_link" href="option2.html">Option 2</a>

$('.menu_link').live('click', function() {
   var thelink = $(this);
   alert ( thelink.html() );
   alert ( thelink.attr('href') );
   alert ( thelink.attr('rel') );

   return false;
});
6 голосов
/ 01 сентября 2016

Прекратите использовать jQuery только ради этого! Это так просто только с JavaScript.

document.querySelector('#the-link').setAttribute('href', 'http://google.com');

https://jsfiddle.net/bo77f8mg/1/

5 голосов
/ 30 марта 2018

Простой способ сделать это:

Функция Attr (с версии jQuery 1.0)

$("a").attr("href", "https://stackoverflow.com/") 

или

Функция поддержки (с версии jQuery 1.6)

$("a").prop("href", "https://stackoverflow.com/")

Кроме того, преимущество вышеуказанного способа заключается в том, что если селектор выбирает один якорь, он обновляет только этот якорь, а если селектор возвращает группу якоря, он обновляет конкретную группу только одним оператором.

В настоящее время существует множество способов идентифицировать точный якорь или группу якорей:

Довольно простые:

  1. Выберите привязку через имя тега: $("a")
  2. Выберите привязку по индексу: $("a:eq(0)")
  3. Выберите якорь для определенных классов (поскольку в этом классе только якоря с классом active): $("a.active")
  4. Выбор якорей с определенным идентификатором (здесь в примере profileLink ID): $("a#proileLink")
  5. Выбор первого якоря href: $("a:first")

Более полезные:

  1. Выбор всех элементов с атрибутом href: $("[href]")
  2. Выбор всех якорей с определенным href: $("a[href='www.stackoverflow.com']")
  3. Выбор всех якорей, не имеющих конкретного href: $("a[href!='www.stackoverflow.com']")
  4. Выбор всех якорей с href, содержащих определенный URL: $("a[href*='www.stackoverflow.com']")
  5. Выбор всех якорей с href, начиная с определенного URL: $("a[href^='www.stackoverflow.com']")
  6. Выбор всех якорей с href, оканчивающихся на определенный URL: $("a[href$='www.stackoverflow.com']")

Теперь, если вы хотите изменить определенные URL, вы можете сделать это следующим образом:

Например, если вы хотите добавить прокси-сайт для всех URL-адресов, идущих на google.com, вы можете реализовать его следующим образом:

$("a[href^='http://www.google.com']")
   .each(function()
   { 
      this.href = this.href.replace(/http:\/\/www.google.com\//gi, function (x) {
        return "http://proxywebsite.com/?query="+encodeURIComponent(x);
    });
   });
3 голосов
/ 13 июля 2015
 $("a[href^='http://stackoverflow.com']")
   .each(function()
   { 
      this.href = this.href.replace(/^http:\/\/beta\.stackoverflow\.com/, 
         "http://stackoverflow.com");
   });
2 голосов
/ 24 марта 2017

Изменить HREF WordPress Avada Theme Изображение логотипа

Если вы установите плагин ShortCode Exec PHP, вы можете создать этот шорткод, который я назвал myjavascript

?><script type="text/javascript">
jQuery(document).ready(function() {
jQuery("div.fusion-logo a").attr("href","tel:303-985-9850");
});
</script>

Теперь вы можете перейти к оформлению / виджетам, выбрать одну из областей виджета нижнего колонтитула и использовать текстовый виджет для добавления следующего шорткода

[myjavascript]

Селектор может меняться в зависимости от того, какое изображение вы используете, и готов ли он к сетчатке, но вы всегда можете выяснить это с помощью инструментов разработчика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...