2014-12-10 4 views
0

Я работаю над сайтом, где содержимое скребуется с другого сайта (оба принадлежат одному человеку). Когда он тянет ссылки, href не отформатирован так, как мне это нужно, поэтому я пытаюсь сохранить исходное значение и просто добавить косую черту в начало. Я подошел, но не могу заставить его работать правильно. Текущий формат: href="like-this", но мне нужно, чтобы он был href="/like-this".Добавить к текущему значению атрибута

Это то, что я пытался, что было близко:

$('.disamb li a').attr('href', function() { 
    return '/' + this.href; 
}); 

Это возвращает весь абсолютный адрес с а/в самом начале. Поэтому я попытался использовать each():

$('.disamb li a').each(function() { 
    $(this).attr('href', '/'+this.href); 
}); 

Тот же результат. Я попробовал пару других способов, но эти два были самыми близкими. Как я могу это сделать, не запуская его через функцию замены, чтобы разбить ее на то, что мне нужно? (Что только кажется неаккуратно)

+1

Что такое URL-адрес и что вы хотите – Rafael

+1

Возможный дубликат: http://stackoverflow.com/questions/1550901/how-to-get-raw-href-contents-in-javascript –

ответ

1

Попробуйте это:

$('.disamb li a').attr('href', function(i, old) { 
    return '/' + old; 
}); 

Функция принимает два аргумента, индекс текущего элемента, а текущее значение атрибута.

Когда вы используете this.href, вы получаете URL-адрес после того, как браузер выполнил канонизацию полного, абсолютного URL-адреса, а не строкового значения атрибута.

+0

А, это хорошо знать об использовании 'this'. Это работало именно так, как мне было нужно. Спасибо! Я знал, что я рядом, но все неправильно. – stinkysGTI

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