Необходимо ли отменить привязку событий показа страниц после закрытия диалога?
Я нахожу что-то немного раздражающее и хочу убедиться, что я не делаю что-то явно не так. Я использую 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');
ОБНОВИТЬ:
О, и вы удаляете диалог из домена?