【问题标题】:jQuery: How to find an element inside of hashchange event handler?jQuery:如何在 hashchange 事件处理程序中找到一个元素?
【发布时间】:2015-07-20 00:36:01
【问题描述】:

一个网页有一些链接:

<a href="#example-hash-1" class="link">example-1</a>
<a href="#example-hash-2" class="link">example-2</a>
<a href="#example-hash-n" class="link">example-n</a>

单击它们上的任何一个都会运行一个 hashchange 事件,我们将对其进行处理:

$(window).on('hashchange', function(event){

    // Is it possible (inside this handler) to find out which of a.link was clicked?

});

或者,还有其他方法吗?

【问题讨论】:

  • 为你的情况event.target会做。
  • location.hash; ?即:var hash = location.hash;

标签: javascript jquery events handlers hashchange


【解决方案1】:

虽然我认为将点击侦听器添加到实际链接是最好的,但您也可以搜索会改变哈希值的元素:

$(window).on('hashchange', function(event){
    $('a[href$='+window.location.hash+']').action();
});

【讨论】:

    【解决方案2】:

    我认为您可以使用 onclick 作为标签中的属性,或者您可以通过 jQuery 使用 .click() 事件。我认为这将与 hashchange 上的窗口相同。

    【讨论】:

      【解决方案3】:

      event.target 将保存触发事件的元素。

      我目前无法检查,但我相信this 也会绑定。

      【讨论】:

        【解决方案4】:

        试试这个:

        $(window).on('hashchange', function(event){
        
            var hash = location.hash;
            var $this = $(hash);
            alert($this.html());
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-02
          • 2015-07-15
          相关资源
          最近更新 更多