知道hashchange事件的发起者

时间:2016-10-31 13:00:02

标签: javascript dom javascript-events

我有一个页面,其中一些链接指向绑定到hashchange事件的锚点和事件处理程序:

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

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

但是,事件eWindow为目标。

有没有办法确定发起hashchange事件的内容,即点击的链接?

2 个答案:

答案 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
    }
  });
});