this
относится к элементу body, который не имеет атрибута "href". Итак, ваш вызов .attr()
возвращает undefined
, который преобразуется в строку "undefined"
.
Если вы просто хотите добавить «#test» к URL, вам не нужно указывать полный URI. Вместо этого вы можете просто указать относительный URL, в этом случае «#test»:
location.href = "#test";
Если вы пытаетесь добавить «#test» к ссылке в вашем документе, вам нужно будет привязать только ссылки с hrefs:
jQuery("a[href]").click(function(e) {
e.preventDefault();
location.href = jQuery(this).attr('href') + '#test';
});
Пара других заметок. Вам не нужно использовать jQuery, чтобы получить href. Было бы проще и понятнее (ИМХО) просто сделать:
location.href = this.href + "#test";
И, вместо того чтобы запретить использование по умолчанию и использовать JavaScript для навигации, вы можете просто изменить ссылку на ссылку:
jQuery("a[href]").click(function(e) {
this.href += "#test";
});