【发布时间】:2012-04-21 06:38:08
【问题描述】:
我正在使用这个
$(window).bind('hashchange', gotohash);
为我的应用添加深层链接。
我的问题是,当我单击带有 href=#whatever 的 <a> 时,它也会触发
我只想在用户使用浏览器的后退和前进按钮或直接转到其中包含哈希的 url 时使用它。
我正在考虑hashChangeEnabled=true/false,然后每次点击都将其关闭
但是有没有更简单的方法来检测它是否是由点击引起的?
最佳做法是什么?
我的解决方案
var disableHashChange = false;
$(window).bind('hashchange', function(){
if(!disableHashChange ){
gotohash();
}
disableHashChange = false;
});
$('.link').click(function(){
disableHashChange = true;
}
回答由imsky
var lastLinkEvent;
$(window).bind('hashchange', function(){
if(lastLinkEvent != window.location.hash){
gotohash();
lastLinkEvent = "";
}
});
$('.link').click(function(){
lastLinkEvent = $(this).attr('href');;
}
谢谢
【问题讨论】:
-
重新考虑应用程序的流程可能会更好...
-
Miro,在上面的“答案”部分 - 如果变量 lastLinkEvent 不在全局范围内,那么它也可以通过'hashchange' 事件?谢谢。
-
是的。 lastLinkEvent 应该在全局范围内:)