Итак, у меня есть глобальная переменная
var INSIDE_GLOBAL = {} ;
INSIDE_GLOBAL.current_search = get_new_current_search();
function get_new_current_search() {
return {
stack:[],
search_options: {
keywords: ""
},
};
}
Затем я настраиваю обработчики для нажатия на разные секции div в аккордеоне. Это добавляет новый раздел к аккордеону, делает его просматриваемым в данный момент разделом и устанавливает обработчики щелчков для следующих разделов с той же функцией (setup_search_click_handlers).
function setup_search_click_handlers() {
$('.search_option').unbind("click");
$('.search_option').bind("click", function(e) {
var new_sub_group = $(this).attr('id');
$("#new_search_panel").bind("accordionchange", function(event, ui) {
$("#new_search_panel").unbind("accordionchange");
//push new section onto the current searches
INSIDE_GLOBAL.current_search.stack.push(new_sub_group);
/* pseudo code */
accordion_add_section_and_select_that_section( with_callback: setup_search_click_handlers );
});
$("#new_search_panel").accordion("activate",-1); //Collapse the accordion, calls the newly binded change
});
}
В конце первого клика INSIDE_GLOBAL.current_search.stack содержит элемент;
Однако, когда происходит следующее событие щелчка и вызывается связанная функция, INSIDE_GLOBAL.current_search.stack снова становится пустым. Не могу понять, почему.
Я предполагаю, что это имеет какое-то отношение к объему различных обратных вызовов, но на самом деле не уверен.
В firebug я вижу, что окно INSIDE_GLOBAL корректно меняется, затем «сбрасывается» туда, где массив стека снова пуст