2016-10-31 3 views
2

У меня есть страница с несколько ссылок, указывающих на якорях и обработчики событий, связанных с hashchange события:Зная инициатор события hashchange

<a href="#foo">Link</a> 

<script type="text/javascript"> 
    $(window).on('hashchange', function(e) { 
     // Do something 
    }); 
</script> 

Однако событие e имеет Window в качестве своей цели.

Есть ли способ определить, что инициировало событие hashchange, то есть ссылку, которая была нажата?

ответ

0

Это немного рубить, но все еще эффективную ... https://jsfiddle.net/bqbq4ust/1/

Что я делаю прикрепляю hashchange события, когда пользователь нажимает на ссылку ..

<a href="#foo">Link</a> 
<a href="#foo2">Link</a> 


$(document).on('click', 'a[href*="#"]', function(e) { 
    $(window) 
    .off('hashchange.myNamespace') 
    .one('hashchange.myNamespace', function(e2) { 
     console.log(e); 
     console.log(e2); 
    }); 
}); 
0

Другого решением является проверьте хэш со всеми ссылками на странице ..

$(window).on('hashchange', function(e) { 
    var hash = location.hash; 
    $('a').each(function() { 
    var that = $(this); 
    if (that.attr('href') === hash) { 
     //that is the initiator 
    } 
    }); 
}); 
Смежные вопросы