Приветствую. С jQuery работаю редко, вот в очередной раз пришлось. Я думаю, структура кода по сути не правильна - поэтому и не работает.
В общем вот код (два обработчика событий и одна глобальная переменная).
var process = false;
$('#dropCategory').bind('click',
function()
{
if (process !== false) return false;
process = $(this); // - это проблемная перееменная
process1 = $(this);
//alert(process.attr('title')); // - здесь она еще правильная (jquery объект)
$('#cc_content #categories').slideToggle('fast',
function()
{
alert(process); // - здесь она `false`
alert(process1); // - здесь нормальный jquery объект
// здесь я использую process для доступа/изменения его свойств
process.addClass(''); //например
process = false; // "обнуляю" process - т.е. текущее действие закончено
}
}
);
$('#...').bind('click',
function()
{
if (process !== false) return false;
process = $(this);
jQuery.ajax
({
'success':function(html)
{
$("body #cc_rContent").html(html);
process = false;
$('#dropCategory').trigger('click'); // - здесь вызываю предыдущее событие
},
});
}
);
Первый обработчик работает правильно при вызове напрямую кликом. Но возникает проблема с process, если вызывать первый обработчик через .trigger().
var process - "контролирует", чтобы в данный момент ничего не выполянлось.
Я могу использовать process1 и все будет нормально (проблема решена), но хотелось бы понять почему process выставляется в `false` в callback функции первого обработчика
(извините, если это бред)