Javascript 了解hashchange事件的发起人
我有一个页面,有一些链接指向绑定到Javascript 了解hashchange事件的发起人,javascript,dom,javascript-events,Javascript,Dom,Javascript Events,我有一个页面,有一些链接指向绑定到hashchange事件的锚和事件处理程序: <a href="#foo">Link</a> <script type="text/javascript"> $(window).on('hashchange', function(e) { // Do something }); </script> $(窗口).on('hashchange',函数(e){ //做点什么 });
hashchange
事件的锚和事件处理程序:
<a href="#foo">Link</a>
<script type="text/javascript">
$(window).on('hashchange', function(e) {
// Do something
});
</script>
$(窗口).on('hashchange',函数(e){
//做点什么
});
但是,事件e
的目标是Window
有没有办法确定是什么引发了
hashchange
事件,即单击的链接?这有点像黑客,但仍然有效
我所做的是在用户单击链接时附加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);
});
});
$(文档)。在('click','a[href*=“#”]”上,函数(e){
$(窗口)
.off('hashchange.myNamespace')
.one('hashchange.myNamespace',函数(e2){
控制台日志(e);
console.log(e2);
});
});
另一个解决方法是检查页面上所有链接的哈希
$(window).on('hashchange', function(e) {
var hash = location.hash;
$('a').each(function() {
var that = $(this);
if (that.attr('href') === hash) {
//that is the initiator
}
});
});