Как да промените href за хипервръзка с помощта на jQuery

Как можете да промените href за хипервръзка с помощта на jQuery?

Решение

Използване на

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

ще промени href на всички хипервръзки, така че да сочат към Google. Вероятно обаче искате малко по-прецизен селектор. Например, ако имате комбинация от тагове за източник на връзка (хипервръзка) и тагове за цел на връзката (наричани още "котва"):

<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 започва с https://stackoverflow.com. След това се дефинира функция, която използва прост регулярен израз, за да замени тази част от URL адреса с нова. Обърнете внимание на гъвкавостта, която ви дава това - тук може да се направи всякакъв вид модификация на връзката.

Коментари (4)

Използвайте метода attr при търсенето. Можете да смените всеки атрибут с нова стойност.

$("a.mylink").attr("href", "http://cupcream.com");
Коментари (1)

В зависимост от това дали искате да промените всички идентични връзки на нещо друго или искате да контролирате само връзките в даден раздел на страницата или всяка една поотделно, можете да направите едно от тези действия.

Променете всички връзки към Google, така че да сочат към Google Maps:

<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/');

За да промените отделни връзки, независимо от това къде се намират в документа, добавете id към връзката и след това добавете този id към селектора. Този пример ще промени втората връзка на 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/');
Коментари (0)