JQuery события

Рейтинг: 0Ответов: 1Опубликовано: 23.11.2014

На нескольких элементах выбранных по классу, висит обработка клика. По нему происходит AJAX запрос с параметрами, полученными из атрибутов кликнутой ссылки.

Возникла необходимость в некоторых ситуациях выполнять ряд дополнительных действий по завершению AJAX запроса. Как бы это реализовать, товарищи? Можно, конечно, вставить ряд условий, смотреть, откуда пришёл клик, и делать-не делать доп. действия.

Но можно ли сделать это плагином? Повесить по классу на все ссылки, по умолчанию будет отрабатывать, как было. А если надо вмешаться, вешать плагин по ID и передавать доп. параметры и функции, вызываемые до/после AJAX запроса.

Сам плагины не писал, имею лишь образное представление, как это делается.
Буду признателен за помощь и разъяснения.

Ответы

▲ 1Принят

Где-то месяц назад я делал пример реализации на вопрос, который косвенно пересекается с вашим. Я его не комментировал, поэтому вкратце опишу тут. Есть (в примере) три кнопки, по клику на которые выполняется Ajax-запрос, отправляя какие-то данные (берутся из атрибута data-id), после успешного завершения запроса, выполняется действие, определённое в другом атрибуте - data-act. Вся обработка этих действий выполняется в заранее созданном объекте. Если нужно добавить N-ю кнопку, то, по сути, надо только дописать в объект очередную функцию и её имя записать в атрибут data-act.

P.S. Не обращайте внимание на то, как я подготавливаю данные для Ajax-запроса или параметры beforeSend, complete и прочее. Это только для работы в песочнице и для наглядности.

Обновление

недостаток в том, что все плюшки доступны только по успешному завершению ajax запроса

Вы хотите, чтоб в случае ошибки ваш callback всё равно выполнялся? )) Например, добавляем комментарий, произошла ошибка и благодарим за "успешный" отзыв? ))

выглядит громоздким

Видимо, вы не работали над большими проектами. Как бы вы ни хотели, но если нужно выполнять уникальное действие после запроса, то так или иначе, но придётся писать под него функцию. Набор этих функций может быть и в виде плагина, и в виде объекта. И универсальность - подразумевает сведение одинаковых действий к минимуму.