Отключить событие во время активности другого события - PullRequest
1 голос
/ 23 августа 2011

Могу ли я сделать это:

$('.box').delegate('.edit', 'click', function(edit_event){   

  ... 
  var input = $('input', this);

  input.focus().bind('blur keypress', function(event){   

    // here disable the first .edit event (don't allow click on that element)?

  });

});

событие будет включено снова, если определенные условия будут выполнены во втором событии (и когда завершится вызов AJAX)

1 Ответ

2 голосов
/ 23 августа 2011

Поскольку вы используете метод delegate() [документы] , основанный на селекторе, вы можете просто добавить класс к текущему .edit, что исключает его из селектора.

 // only invoke if it has "edit" class and not "disable" class
$('#box').delegate('.edit:not(.disable)', 'click', function (edit_event) {

      // add the class to this edit element to disable it
    var edit = $(this).addClass('disable');
    var input = $('input', this);

    input.focus().bind('blur keypress', function (event) {

        // here disable the first .edit event (don't allow click on that element)?

        // after some work, remove the class to re-enable the click
        edit.removeClass('disable');
    });

});

Я использовал not-selector [документы] , чтобы событие click не сработало, пока класс disable не будет удален.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...