2012-04-24 72 views
1

即时通讯使用哈希变化下面的例子:jQuery中的hashchange?

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

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

但好像没有任何反应,我没有得到任何警告。任何想法为什么?

回答

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'将被触发。

0

Hashchange发生在window对象上。 $('.navBtn').bind('hashchange', ...)意味着什么?

+0

url a href“/ something#home”,然后jquery将得到散列 – panthro 2012-04-24 16:14:11

+0

你的导航按钮应该只设置散列,即'href =“#home”',然后'hashchange'将出现在'window'上。你应该在窗口对象上监听hashchange事件。 – 2012-04-24 16:18:00

1

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

另外,我不确定,但是您在窗口元素上触发事件,但将它绑定到一组子元素上。我不知道如何工作。

1

你必须:

  1. 逆顺序为:BIND然后触发,当你在一个导航按钮,点击它会加载
  2. 使用相同的选择

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