Я использую таблицы данных jQuery для отображения некоторых данных. В каждой строке есть кнопка редактирования, для которой я регистрирую обработчик кликов с помощью live()
, чтобы он работал с нумерацией страниц. Я делаю это по классам, так как я должен делать это для каждой строки. Что-то вроде: Таблицы данных с функцией события живого клика
Это отлично работает, но проблема возникает, когда пользователь снова выполняет поиск, и я делаю запрос ajax для получения нового набора результатов.
Я просто заменяю существующую таблицу в доме на новую. Теперь, когда я нажимаю на строку 1, появляется диалоговое окно редактирования для строки 1. Я нажимаю на строку 2, появляется диалоговое окно редактирования для строки 1. Я снова нажимаю на строку 2, и на этот раз открывается диалоговое окно редактирования для строки 2.
Затем я снова и снова нажимаю на строку 3. Он трижды выводит диалоговое окно редактирования для строки 2, прежде чем отобразить диалоговое окно для строки 3.
Это продолжает увеличиваться. Я не понимаю, если я заменяю всю таблицу данных в div на jQuery, почему он должен регистрировать несколько событий?
В случае, если это имеет значение, в моем инициализаторе диалога для autoopen установлено значение false, и я явно открываю и закрываю его.
Изменить (подробнее):
Мне трудно создать пример ... но подробнее ... Я понял, что, поскольку я использую функцию live()
для регистрации вызовов через разбиение на страницы, существует механизм регистрации кликов. Поэтому, когда я заменяю таблицу той же структурой, функция щелчка регистрируется из-за первого вызова live()
. Но я делаю еще один вызов live()
по умолчанию, и теперь регистрируются два события щелчка. Затем, когда я снова заменяю, регистрируются три щелчка события. Я попытался преодолеть это, зарегистрировав события с помощью jQuery click()
после проверки, зарегистрировано ли уже событие клика. Помогает с частью нескольких событий, но не регистрирует события на страницах таблиц данных.