簡體   English   中英

知道hashchange事件的發起者

[英]Knowing the initiator of a hashchange event

我有一個頁面,其中一些鏈接指向綁定到hashchange事件的錨點和事件處理程序:

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

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

但是,事件eWindow為目標。

有沒有辦法確定啟動hashchange事件的內容,即點擊的鏈接?

這有點像黑客但仍然有效... 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);
    });
});

另一種解決方法是使用頁面上的所有鏈接檢查哈希值。

$(window).on('hashchange', function(e) {
  var hash = location.hash;
  $('a').each(function() {
    var that = $(this);
    if (that.attr('href') === hash) {
      //that is the initiator
    }
  });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM