Я пытаюсь удержать привязку моего события 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 срабатывает дважды. Я пытался навсегда установить флаг где-нибудь, чтобы заблокировать 2-й hashChange, но он не работает, как я надеялся.
Вопрос:
Как можно убедиться, что это не пузыриться? Я пытаюсь что-то вроде этого, но это не работает:
var $blockBubblingHashes = 0;
$(window).bind('hashchange', function( e ) {
if ($blockBubblingHashes == 0) {
// run hashChange routine
$blockBubblingHashes = 1;
} else {
$blockBubblingHashes = 0;
}
});