Подтвердить что ты не робот

Получить значение хеша из URL-адреса

Я пытаюсь получить значение хэша после того, как была нажата ссылка. Любые идеи?

например.

Ссылка

index.html#needThis

Это мой результат:

index.htmlneedThis

Как я могу удалить 'index.html'?

$('#myselector').on('click', 'a', function(){
    var hash = $(this).attr('href').replace('#', '') //get url
    console.log(hash);
})
4b9b3361

Ответ 1

Обновление

Современные браузеры (не уверенные, как это происходит) могут извлечь hash непосредственно из элементов привязки (поэтому я добавил # 5)


Возьмите свой выбор..

  • var hash = $(this).attr('href').split('#')[1];
  • var hash = $(this).attr('href').replace(/^.*?#/,'');
  • var href = $(this).attr('href'), hash = href.substr(href.indexOf('#')+1);
  • var hash = $(this).attr('href').match(/#(.*$)/)[1];
  • var hash = this.hash.substr(1);

Обновление

Просто пересматриваю это, и я считаю, что # 2 можно улучшить до

$(this).attr('href').replace(/^.*?(#|$)/,'');

Таким образом, если хеш не существует, он будет возвращать пустой, а не весь URL.

Ответ 2

Просто используйте var hash = window.location.hash.

Он возвращает все после #

Или, если у вас есть переменная, которая содержит URL-адрес:

$(this).attr('href').substring($(this).attr('href').indexOf('#'))

Ответ 3

Вы можете попробовать с хешем расположения окна.

$('#myselector').on('click', 'a', function(){
    var hash = $(this).attr('href').replace('#', '') //get url
    var hash2 = window.location.hash ;
    console.log(hash2);
})

Ответ 4

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

$('#myselector').on('click', 'a', function(){
    var url = $(this).attr('href') //get url
    var arr = url.split('#');
    alert(arr[0]); //URL without hash #
    var hash = arr[1];
    console.log(hash);
})​

Ответ 5

Почему бы просто не использовать:

window.location.hash

Работает отлично для меня.