2010-03-30 3 views
3
$(function(){ 
      $('a').each(function(){ 
         var x=this.href; 
         this.href="www.somesitename.com/filter"+this.href; 
        }); 
     }); 

Я написал сценарий jQuery выше, чтобы добавить какое-либо имя сайта ко всем ссылкам на странице, но оно не работает должным образом.jQuery для изменения всех ссылок на странице

+4

Как вы ожидали, что это сработает? –

ответ

12

Интересно, почему вы бы использовать JQuery для такого базового поведения ...

именно поэтому tag BASE есть для

Укажите URL в по умолчанию и цель по умолчанию для все ссылки на странице:

<head> 
    <base href="http://www.w3schools.com/images/" /> 
    <base target="_blank" /> 
</head> 

<body> 
    <img src="stickman.gif" /> 
    <a href="http://www.w3schools.com">W3Schools</a> 
</body> 

не затруднит, что это просто!


добавил

из Sitepoint

Базовый элемент только собирается быть полезным для вас, если все ваши относительные ссылки или формы представления идут в том же месте ,

+2

Не могу поверить, что я никогда не знал этого ... –

+0

, который мог бы сделать трюк, я не знал о базовом теге. –

+0

Есть ли способ, которым я могу сделать то же самое, чтобы сформировать элемент действия? –

29

Вы, вероятно, нужно добавить http://:

$(function(){ 
    $('a').each(function() { 
     $(this).attr('href', 'http://www.somesitename.com/filter' + this.href); 
    }); 
}); 
+0

Это правильный ответ. –

-2

Вы, вероятно, необходимо использовать функцию Append() JQuery имеет http://api.jquery.com/append/

+2

Вопрос заключается в добавлении к ** атрибуту ** не ** ** ** ** – Quentin

+0

Да, я понял ошибку, которая должна была быть атрибутом. –

0

определить базовый тег в вашей голове, а затем обновить его свойство href при необходимости.

<base href="http://www.some-domain.com/" /> 
$("base").attr("href","http://www.some-other-domain.com/"); 
0

Вот что я использовал, чтобы сделать это

Я удалили каждый «блог /» из HREF на странице в то же самое вы можете изменить ссылку или обновить его

$('a').each(function(){ var updated_link = $(this).attr('href').replace('blog/', ''); $(this).attr('href', updated_link); });

Я использовал функцию замены обновить часть url.in вашего дела вы можете обновить его

0

Фюрт улучшение эр раствора Дарин в:

$(function(){ 
    $('a').attr('href', (n, old) => 'http://www.somesitename.com/filter' + old); 
}); 

Одна вещь, чтобы заметить, что в случае .each this.href производит абсолютное полное URL (например: http://localhost:8888/mylink), так что результат может выглядеть примерно так: WWW. somesitename.com/filter/ http://localhost:8888/mylink. Решение заключалось в получении значения атрибута через jQuery: $ (this) .attr ('href'), который правильно дает /mylink.

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