Я играл с элементами подписки на события AJAX в jQuery.
У меня есть элемент, который я использую для загрузки ответов AJAX.Этот элемент отображается только в том случае, если имеются данные, относящиеся к текущему контексту программы.
Итак, я подумал, что было бы неплохо и легко выполнить .show () всякий раз, когда AJAX-запрос завершен, и скрыть его.когда мне нужноЯ хотел бы устранить необходимость неявного .show () элемента каждый раз, когда я делаю запрос AJAX.
В jQuery есть .ajaxSuccess () и .ajaxComplete ().Однако они будут срабатывать при завершении / успешном выполнении любого запроса AJAX, поэтому при загрузке данных в другие части страницы мой скрытый элемент будет .show ().
Решение, по-видимому, (согласно API jQuery).ссылка), чтобы использовать параметр ajaxOptions в вашей функции обработчика событий:
$('.log').ajaxComplete(function(e, xhr, settings) {
if (settings.url == 'ajax/test.html') {
$(this).text('Triggered ajaxComplete handler.');
}
});
Что я не понимаю, так это причина регистрации обработчика событий для всех запросов AJAX к определенному элементу, помимо возможности использовать$ (это).Я что-то упустил, могу ли я зарегистрировать обработчик событий для запроса AJAX, специфичного для элемента?
Если нет, есть ли какая-либо управляемая событиями альтернатива использованию .url?Причина, по которой я спрашиваю, состоит в том, что я широко использую фрагмент страницы для отслеживания состояния страницы, и было бы легче иметь обработчик события .show () для моего элемента всякий раз, когда запрос AJAX загружает в него данные.
EDIT: Postназвание грамматики.