1

我使用以下示例进行哈希更改:

$(window).trigger('hashchange');

$('.navBtn').bind('hashchange',function(){ 
    var hval = location.hash.slice(1); // remove the leading #
    alert(hval);
}); 

但似乎什么也没发生,我没有得到任何警报。任何想法为什么?

4

4 回答 4

5

您只需要

//the js
$(window).bind('hashchange',function(){ 
    var hval = location.hash.slice(1); // remove the leading #
    alert(hval);
}); 

<!--the html-->
<a href="#imTheHash">Click me</a>

在窗口上触发哈希更改事件。更改哈希不需要js。这是由浏览器处理的。即单击链接将更改哈希,然后将触发窗口事件“hashchange”。

于 2012-04-24T16:13:31.100 回答
1

您在绑定处理程序之前触发事件。颠倒顺序再试一次?

另外,我不确定,但是您正在触发窗口元素上的事件,但将其绑定在一组子元素上。我不知道这将如何运作。

于 2012-04-24T16:10:02.893 回答
1

你必须:

  1. 颠倒顺序:先绑定然后触发
  2. 使用相同的选择器

    $(window).bind('hashchange',function(){ 
      var hval = location.hash.slice(1); // remove the leading #
      alert(hval);
    }); 
    $(window).trigger('hashchange');
    
于 2012-04-24T16:16:50.430 回答
0

Hashchange 发生在window对象上。你想表达什么$('.navBtn').bind('hashchange', ...)意思?

于 2012-04-24T16:09:54.270 回答