Библиотека Noty может использоваться как в чистом JavaScript, так и в связке с jQuery. Несмотря на то, что современные версии Noty не требуют jQuery, интеграция с ним часто применяется в проектах с устаревшей архитектурой или при работе с существующим кодом.
Для начала необходимо подключить зависимости:
<link rel="stylesheet" href="noty.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="noty.min.js"></script>
Порядок подключения важен: сначала jQuery, затем Noty.
Основной сценарий использования — создание уведомлений в ответ на пользовательские действия, обрабатываемые через jQuery:
$(document).ready(function () {
$('#btn').on('click', function () {
new Noty({
text: 'Кнопка была нажата',
type: 'success'
}).show();
});
});
Ключевые особенности:
.show()Одно из самых распространённых применений — уведомления при выполнении AJAX-запросов.
$.ajax({
url: '/api/data',
method: 'GET',
success: function (response) {
new Noty({
text: 'Данные успешно загружены',
type: 'success'
}).show();
}
});
$.ajax({
url: '/api/data',
method: 'GET',
error: function () {
new Noty({
text: 'Ошибка при загрузке данных',
type: 'error'
}).show();
}
});
$.ajax({
url: '/api/save',
method: 'POST',
data: { name: 'Test' },
beforeSend: function () {
new Noty({
text: 'Отправка данных...',
type: 'info',
timeout: 1000
}).show();
},
success: function () {
new Noty({
text: 'Данные сохранены',
type: 'success'
}).show();
},
error: function () {
new Noty({
text: 'Ошибка сохранения',
type: 'error'
}).show();
}
});
При работе с формами jQuery часто применяется для валидации и отправки данных. Noty удобно использовать для отображения статуса.
$('form').on('submit', function (e) {
e.preventDefault();
let input = $('#name').val();
if (!input) {
new Noty({
text: 'Поле обязательно для заполнения',
type: 'warning'
}).show();
return;
}
new Noty({
text: 'Форма отправлена',
type: 'success'
}).show();
});
При работе с динамически добавляемыми элементами применяется делегирование:
$(document).on('click', '.delete-btn', function () {
new Noty({
text: 'Элемент удалён',
type: 'alert'
}).show();
});
Это особенно важно в приложениях, где DOM обновляется без перезагрузки страницы.
Можно задать глобальные параметры Noty при инициализации приложения:
$(document).ready(function () {
Noty.overrideDefaults({
layout: 'topRight',
theme: 'mint',
timeout: 3000,
progressBar: true
});
});
Теперь все уведомления будут использовать эти настройки по умолчанию.
Для упрощения использования часто создаётся вспомогательная функция:
function showNotification(type, text) {
new Noty({
type: type,
text: text
}).show();
}
Использование:
showNotification('success', 'Операция выполнена');
showNotification('error', 'Произошла ошибка');
Хотя Noty не является jQuery-плагином в классическом смысле, его можно интегрировать в цепочки логики:
$('#saveBtn').on('click', function () {
$(this).prop('disabled', true);
new Noty({
text: 'Сохранение...',
type: 'info',
timeout: 1000
}).show();
setTimeout(() => {
$(this).prop('disabled', false);
new Noty({
text: 'Готово',
type: 'success'
}).show();
}, 1000);
});
Noty имеет собственные анимации, но их можно комбинировать с jQuery:
$('#panel').fadeOut(300, function () {
new Noty({
text: 'Панель скрыта',
type: 'information'
}).show();
});
В jQuery-коде часто возникает необходимость управлять несколькими уведомлениями:
$('#clearAll').on('click', function () {
Noty.closeAll();
});
Создание нескольких уведомлений:
$('#multi').on('click', function () {
for (let i = 0; i < 3; i++) {
new Noty({
text: 'Уведомление #' + (i + 1),
type: 'info'
}).show();
}
});
При использовании jQuery UI Noty может дополнять взаимодействие:
$('#dialog').dialog({
buttons: {
"Сохранить": function () {
new Noty({
text: 'Изменения сохранены',
type: 'success'
}).show();
$(this).dialog("close");
}
}
});
Можно создавать собственные события и вызывать уведомления через jQuery:
$(document).on('user:login', function () {
new Noty({
text: 'Пользователь вошёл в систему',
type: 'success'
}).show();
});
Триггер события:
$(document).trigger('user:login');
Пример использования Noty в зависимости от состояния DOM:
$('.item').on('click', function () {
if ($(this).hasClass('active')) {
new Noty({
text: 'Элемент уже активен',
type: 'warning'
}).show();
} else {
$(this).addClass('active');
new Noty({
text: 'Элемент активирован',
type: 'success'
}).show();
}
});
jQuery Deferred можно использовать вместе с Noty:
function asyncOperation() {
let deferred = $.Deferred();
setTimeout(() => {
deferred.resolve();
}, 1000);
return deferred.promise();
}
asyncOperation().done(function () {
new Noty({
text: 'Асинхронная операция завершена',
type: 'success'
}).show();
});
Связка Noty + jQuery особенно актуальна для:
Преимущества:
Ограничения:
В крупных проектах используется единая точка вызова уведомлений:
const Notifier = {
success: (text) => new Noty({ type: 'success', text }).show(),
error: (text) => new Noty({ type: 'error', text }).show(),
warning: (text) => new Noty({ type: 'warning', text }).show(),
info: (text) => new Noty({ type: 'info', text }).show()
};
Применение:
Notifier.success('Данные обновлены');
Notifier.error('Ошибка сервера');
Такой подход упрощает поддержку и изменение поведения уведомлений в одном месте.