Вспоминая чекбоксы на разных страницах - как лучше?

Мне нужно добавить функциональность, аналогичную Gmail, где флажки в списке элементов запоминаются на нескольких страницах результатов, а также при уходе и возвращении к результату. То, что я пытаюсь выяснить, является лучшим способом сделать это. Я использую PHP и, вероятно, JQuery.

Моя первая мысль - добавить onClick для каждого флажка, который запускает обратный вызов AJAX серверу, который сохраняет идентификатор в массиве в сеансе. Каждый раз, когда загружается список элементов, система проверяет, отмечена ли строка, и, если необходимо, устанавливает флажок. Для надежности этот флажок будет снят после проверки, если запрос к серверу не может быть выполнен (проблема с подключением, ошибка сервера и т. Д.), И запрос будет выполнен как можно быстрее.

Звучит все хорошо, за исключением нескольких пунктов:

проверить все: что происходит? Отправляет ли он 30 (элементов страницы по умолчанию) на сервер? Или я должен удалить все onClicks, установить флажки, отправить запрос на сервер со всеми идентификаторами, а затем повторно добавить onClicks? Или же...? Подобная проблема с снятием галочки со всех.скорость: могут возникнуть проблемы, если сотни пользователей все время проверяют и снимают галкуСкорость браузера: я думаю, что лучше всего добавить onClick с JS после загрузки страницы, что, я думаю, может занять секунду или 2, если на одной странице 500 или более элементов. Стало бы большей проблемой с проверкой всего.

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

Есть ли другие решения или лучшие методы?

Редактировать: Как упомянутоЭран Гальперин, метод check all должен был бы только проверить каждый из флажков и затем выполнить ajax-вызов со всеми строками. Нет необходимости удалять onClick.

Кроме того, похоже, что метод делегирования событий является хорошей идеей - он намного упростит задачу.

Ответы на вопрос(1)

Ваш ответ на вопрос