即使散列没有改变,jQuery地址散列更改也会触发

Dyl*_*oss 4 hash jquery hashchange

我正在使用这个插件http://www.asual.com/jquery/address/来检测我的网站的哈希变化等,它只使用它来导航,因此它是用户体验的重要组成部分.现在这对我正在用它做的每件事都很有效,除非它没有触发事件,如果哈希没有改变/没有被点击的最后一个哈希网址不同,例如,如果我在例子中. com/home并再次单击主页图标,它不会再次重新加载页面,就像您只是使用常规链接一样.我无法弄清楚如何为URL中的所有链接实现此目的.(不仅仅是所有标签,因为我使用标签而不是导航部分.所以任何帮助都会很棒,谢谢.

$.address.change(function(event){  
 ///events to be triggered on hash change
});
Run Code Online (Sandbox Code Playgroud)

Aus*_*tin 5

onhashchange事件恰当地命名,它只在哈希值发生变化时触发.

我知道这个问题的唯一解决方案是将相同的函数绑定到主页图标的click事件.

此外,jQuery提供了自己的哈希更改事件:

$(window).on("onhashchange", function (e) {
     route();
})
$(".icon").on("click", function(e) {
     location.hash == "#/" ? route(): null;
})
Run Code Online (Sandbox Code Playgroud)

此外,如果这些是标签,例如,在#nav div中:

$("#nav").delegate("a", "click", function () {
     location.hash == this.href ? route() : null;
})
Run Code Online (Sandbox Code Playgroud)

或者这可以应用于所有标签:

$("a").on("click", function () {
     location.hash == this.href ? route() : null;
})
Run Code Online (Sandbox Code Playgroud)