我有一个页面,其中一些链接指向绑定到hashchange
事件的锚点和事件处理程序:
<a href="#foo">Link</a>
<script type="text/javascript">
$(window).on('hashchange', function(e) {
// Do something
});
</script>
但是,事件e
以Window
为目标。
有没有办法确定发起hashchange
事件的内容,即点击的链接?
答案 0 :(得分: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);
});
});
答案 1 :(得分: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
}
});
});