Получить хеш URL во время события / функции клика

Во время функции события jQuery click я понимаю, что событие click запускается до завершения базового события (и URL обновляется) ... поэтому вы можете управлять событием. Это означает, что хэш ссылки еще не доступен черезwindow.location.hash

Является ли e.target.hashлучше , чем достижения в <a>самом элемент , чтобы получить хэш - значение; или передать необходимую переменную через onclickсобытие? «Лучше» определяется как совместимость между браузерами или более подвержена ошибкам.

Например:

<a class="accountLink" href="#account/123456">Account 123456</a>
$('.accountLink').click(function(e){
  console.log(e.target.hash);
  console.log(window.location.hash);
});

Журнал:

#account/123456
(blank on initial click)

https://jsfiddle.net/r1xpsut1/1/

javascript,jquery,

2

Ответов: 2


2 принят

Учитывая ваши требования, похоже, что onhashchangeсобытие windowбыло бы более уместным:

window.onhashchange = function() {
    alert(window.location.hash);
}

Обновленная скрипка


0

Согласно Mozilla Web API , Event.targetподдерживается в каждом современном браузере, за исключением Internet Explorer 6-8, где Event.srcElementиспользуется вместо этого, поэтому, если вы хотите его поддержать, вы можете использовать:

var target = (event.target || event.srcElement);

Фактически указанное .eventсвойство определяется как :

Элемент DOM на левой стороне вызова, вызвавший это событие, например:

element.dispatchEvent(event)

Это то же самое, что и вы сами <a>.

JavaScript, JQuery,