Необходимо ли отменить привязку событий показа страниц после закрытия диалога?

Я нахожу что-то немного раздражающее и хочу убедиться, что я не делаю что-то явно не так. Я использую jquery-мобильный 1.4.

У меня есть mainpage.html, который вызывает dialogpage.html, смоделированный как диалог. Страница диалога имеет

.

Диалоговая страница также имеет событие pagehow, прикрепленное к странице div, вот так

$(document).on('pageshow', '#dialogpage', function(event) {
  console.log('pageshow dialogpage');
});

Я обнаружил, что каждый раз, когда я открываю эту диалоговую страницу, вызывается дополнительное событие pagehow. Под этим я подразумеваю, что когда я впервые открываю диалоговое окно, консоль печатает "pagepage dialogpage" один раз. Второй раз, когда я открываю диалог, он печатает его дважды. Третье открытие страницы печатает это трижды, и т. Д.

Кажется, что событие pagehow прикрепляется снова и снова каждый раз, когда я открываю страницу. В некотором смысле это имеет смысл, но кажется довольно раздражающим иметь дело с.

Мое решение состоит в том, чтобы добавить событие отмены привязки, например, так:

$(document).on('pagehide', '#dialogpage', function(event) {
    console.log('pagehide dialogpage');
    $(document).unbind('pageshow');
    $(document).unbind('pagehide');
  });

Похоже, это не позволяет печатать "диалоговое окно страниц" несколько раз. Но значит ли это, что мне нужно отменить привязку всех событий на странице диалога?

Я делаю что-то неправильно?

1 ответ

Поскольку вы связываете свои события с включенным, я бы связывал их с выключенным. И я бы также указал фильтр (#dialogpage):

$(document).off('pageshow','#dialogpage');
$(document).off('pagehide','#dialogpage');

ОБНОВИТЬ:

О, и вы удаляете диалог из домена?

Другие вопросы по тегам