【发布时间】:2011-11-25 10:51:21
【问题描述】:
我正在尝试防止我的 hashChange 事件绑定冒泡。
我有这个:
$(window).bind('hashchange', function( e ) {
console.log("hash fired");
// run hashChange routine
});
我的脚本管理页面上的面板,每个面板都有自己的历史堆栈。每次转换都会触发上述内容,但我在前向转换时阻止了 hashChange,因此我可以更深入地导航到面板中。在向后“转换”时,只有 hashChange 触发并且没有被阻止,所以我可以回去。
导航可能如下所示:
panel A, start down > page2
panel A, page2 down > page3
panel A, page3 up > page2
panel A, page2 up > start - hashChange fires twice here...
一切正常(= hashChange 触发一次),直到我在初始设置之前到达页面。在最后一步,上面的 hashChange 绑定会触发两次。我一直试图在某处设置一个标志来阻止第二个 hashChange,但它并没有像我希望的那样工作。
问题:
如何保证这不会冒泡?我正在尝试这样的事情,但它不起作用:
var $blockBubblingHashes = 0;
$(window).bind('hashchange', function( e ) {
if ($blockBubblingHashes == 0) {
// run hashChange routine
$blockBubblingHashes = 1;
} else {
$blockBubblingHashes = 0;
}
});
【问题讨论】:
标签: javascript jquery events event-bubbling