Добавление URL с использованием jquery и protectDefault () - PullRequest
0 голосов
/ 07 октября 2011

Я пытаюсь добавить URL с идентификатором (просто в качестве теста) в моей установке joomla, используя следующий код.

jQuery('body').click(function(e) {
    e.preventDefault();
    window.location = jQuery(this).attr('href') + '#test'; 
}); 

Теперь это работает в некоторой степени, за исключением того, что добавляет строку "undefined" прямо перед "#test".

Пример:

www.website.com / статьи / неопределенный # тест

Почему добавляется "undefined", и есть ли способ остановить это?

Спасибо

Ответы [ 3 ]

2 голосов
/ 07 октября 2011

тег body не имеет атрибута href.Используйте

window.location.hash = '#test';

вместо.

2 голосов
/ 07 октября 2011

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";
}); 
0 голосов
/ 07 октября 2011

Это потому, что тег body не имеет атрибута href.Обычно это делается для ссылок, т.е.

<a href="some link">Link</a>  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...