This.href vs $(this).attr('href')
После прочтения этой статьи net.tutsplus.com/tutorials/javascript-ajax/14-helpful-jquery-tricks-notes-and-best-practices/ я пришел к выводу, что использование this.href более эффективно.
Однако, когда я попытался использовать его в одном из моих проектов, я увидел, что this.href возвращает не только href, но также добавляет URL-адрес веб-сайта. Например <a href="tab-04"></a>
this.href вернет http://example.com/abc/tab-04 и $(this).attr('href') вернет только tab-04.
Здесь вы можете увидеть пример http://jsfiddle.net/UC2xA/1/.
$(this).attr('href'), однако возвращает именно то, что мне нужно, и ничего больше.
Мой вопрос в том, как я могу переписать (или сделать то, что необходимо) this.href, чтобы он возвращал tab-04?
ИЗМЕНИТЬ
Дуг, вы правы на деньги с помощью
this.getAttribute('href')
Ответы
Ответ 1
Свойство href
в простом Javascript будет иметь прикрепленную к нему семантику. Он возвращает целевой URL, к которому приведет ссылка. Неважно, как это было написано (абсолютные или относительные URL-адреса).
Когда вы используете $(this).attr("href")
, вы сразу получаете значение атрибута href
, как и любой другой атрибут, поэтому оно возвращает точное значение, отображаемое в HTML.
Для вашего случая, лучше использовать $(this).attr("href")
Если вы не хотите использовать jQuery, есть еще одно решение, использующее простой JavaScript:
this.getAttribute('href')
Ответ 2
document.getElementById(yourAnchorId).href.split("/")
[document.getElementById(yourAnchorId).href.split("/").length - 1].split("?")[0];
Ответ 3
какая небольшая подстрока?
например:
function getHref(a)
{
var i = a.outerHTML.indexOf('href="')+6;
return a.outerHTML.substring(i, a.outerHTML.indexOf('"', i));
}
PES TESTED!