Blockui отрывает события - PullRequest
       9

Blockui отрывает события

0 голосов
/ 08 ноября 2011

Я использую block ui, чтобы заблокировать страницу и получить некоторую информацию:

В сообщении div у меня 2 кнопки. ОК и Отмена.

Если я установлю события нажатия на загрузку страницы:

$('#title-picker input[name=ok]').click(ok);
$('#title-picker input[name=cancel]').click(cancel);

События не запускаются после вызова $ .blockUI. Однако, если я вместо этого использую метод .live, он работает как задумано.

$('#title-picker input[name=ok]').live('click',ok);
$('#title-picker input[name=cancel]').live('click',cancel);

Я предполагаю, что механизм, который он использует, удаляет и добавляет div в DOM, и это должно быть то, что отсоединяет исходные обработчики событий. Ранее я использовал более ранние версии пользовательского интерфейса, но этого не произошло. И я не вижу ничего очевидного в документации.

Итак, мои рассуждения верны?

И есть ли недостатки использования .live, т. Е. Есть ли лучший обходной путь, чем у меня выше?

Спасибо

1 Ответ

0 голосов
/ 08 ноября 2011

вы можете использовать делегат вместо живого

$('#title-picker').delegate('input', 'click', function(){
  if (this.name == 'ok') {
    ok();
  } else {
    cancel();
  }
//or even:  

  // window[this.name]();

  //if needed use the scope where your functions are defined 
  //instead of the window element
});

ps: в документации упоминается, что:

Что изменилось в версии 2 плагина BlockUI?

    Elements are no longer removed from the DOM when unblocking
...