2013-07-08 4 views
-1

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

<a href="/url/urlpage.ext">Click here</a> 
<a href="http://www.google.com">Google</a> 

Я хочу, чтобы иметь возможность, с помощью JQuery, пройти через все ссылки на странице и добавить к beginining из URL, если они не имеют HTTP, добавьте его ... так что конечный URL выглядит следующим образом:

<a href="http://www.mysite.com/url/urlpage.ext">Click here</a> 
<a href="http://www.google.com">Google</a> 

Надеется, что это имеет смысл. Спасибо, парни!

+1

Это возможно, но ТАК не место, чтобы просить других, чтобы написать код с нуля. Вы сделали попытку? Если да, пожалуйста, покажите свой код и объясните, как он не совсем соответствует вашим ожиданиям. Если вам не нравится писать код, вам может потребоваться обратиться за помощью к профессиональному разработчику. –

+0

Будьте осторожны с относительными или абсолютными URL-адресами здесь. Может ли страница быть несколькими папками на сайте и, следовательно, вам придется восстановить путь? –

+0

Есть ли причина, по которой вам нужно изменить ваши закодированные (относительные) URL-адреса на жестко закодированные (абсолютные) URL-адреса? Быстрее использовать относительные ссылки, потому что вы избегаете ненужной маршрутизации. – Johannes

ответ

3

Вы можете сделать:

$("a:not([href^=http])").each(function(){ 
    $(this).attr('href', 'http://www.mysite.com'+$(this).attr('href')) 
}); 
+0

+1 - Мне всегда нравится указывать, что многие функции jQuery принимают функции для изменения атрибута: '$ (this) .attr ('href', function (_, href) {'foo' + href});' – Kyle

+1

большое спасибо. Это получилось здорово! Что это значит: [href^= http]? – Damien

+1

@Damien Селектор jQuery выглядит следующим образом: выберите теги привязки, которые не имеют атрибута href, начинающегося с 'http' – Kyle

1

Вы можете сделать:

$("a").each(function() { 
    //Get the current href 
    var href = $(this).attr("href"); 

    //Check for http in the beginning 
    if (href.indexOf("http://") == -1) { 

     //Add to it and set it 
     href = "http://" + href; 
     $(this).attr("href", href); 
    } 
}); 
0
//for every <a> 
$('a').each(function() { 
    // get existing href 
    var href= $(this).attr('href'), 
    // start at the beginning, get first 7 chars 
    var first7char = href.substr(0, 7); 
    // if not http or https 
    if(first7char !== 'http://' || 'https://'){ 
     // insert http:// 
    $(this).attr('href', 'http://' + href'); 
    } 
}); 
Смежные вопросы