Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.12.2011, 05: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 функции первого обработчика

(извините, если это бред)
Ответить с цитированием
  #2 (permalink)  
Старый 25.12.2011, 15:53
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от madicom
хотелось бы понять почему process выставляется в `false` в callback функции первого обработчика
Так Вы сами устанавливаете эту переменную в false в обоих обработчиках.
Сообщение от madicom
process = false;
Вы не можете предугадать, какой из них выполнится раньше и установит process в false.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переменная после отправки данных lukingnu AJAX и COMET 0 19.03.2011 19:24
Глобальная переменная в функции Орёл Общие вопросы Javascript 1 18.12.2010 19:21
Глобальная переменная vah-smile Общие вопросы Javascript 3 06.07.2010 11:41
Глобальная переменная, считать правильнае значение в функции konstantinopol Общие вопросы Javascript 11 01.05.2010 22:28
Глобальная переменная и массив mikeles Events/DOM/Window 2 21.11.2009 17:37