Показать сообщение отдельно
  #1 (permalink)  
Старый 24.12.2011, 07:59
Новичок на форуме
Отправить личное сообщение для madicom Посмотреть профиль Найти все сообщения от madicom
 
Регистрация: 24.12.2011
Сообщений: 1

.trigger() и глобальная переменная
Приветствую. С 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 функции первого обработчика

(извините, если это бред)
Ответить с цитированием