jQuery — это легкая библиотека JavaScript, упрощающая работу с DOM,
обработку событий, анимацию и AJAX. Для использования необходимо
подключить библиотеку через <script>:
<script src="https://code.jquery.com/jquery-3.7.0.min.js"></script>
Основной синтаксис jQuery строится вокруг функции $().
Она служит для выбора элементов DOM, создания новых
элементов и вызова методов библиотеки:
$(document).ready(function() {
// код выполняется после полной загрузки DOM
});
Альтернатива $(document).ready() — короткая запись:
$(function() {
// код здесь
});
jQuery использует селекторы CSS для доступа к элементам. Основные способы:
$('#id') // элемент с конкретным id
$('.class') // элементы с классом
$('div') // все div
$('div > p') // все <p>, дочерние <div>
Возвращаемый объект — это коллекция элементов jQuery, позволяющая применять методы массово, что удобно для оптимизации кода.
$('#element').text(); // получить текст
$('#element').text('новый'); // изменить текст
$('#element').html(); // получить HTML
$('#element').html('<b>текст</b>'); // установить HTML
$('#element').attr('src'); // получить значение атрибута
$('#element').attr('src', 'img.jpg'); // изменить значение
$('#element').removeAttr('disabled'); // удалить атрибут
$('#element').addClass('active'); // добавить класс
$('#element').removeClass('hidden'); // удалить класс
$('#element').toggleClass('open'); // переключить класс
$('#element').css('color'); // получить стиль
$('#element').css('color', 'red'); // установить стиль
$('#element').css({ // установить несколько стилей
'font-size': '16px',
'margin-top': '10px'
});
jQuery упрощает привязку событий и их делегирование.
$('#btn').on('click', function() {
alert('Нажато!');
});
Удаление события:
$('#btn').off('click');
Часто используется делегирование для динамически созданных элементов:
$(document).on('click', '.dynamic-btn', function() {
console.log('Кнопка нажата');
});
jQuery предоставляет простые методы анимации и переходов:
$('#element').hide(); // скрыть
$('#element').show(); // показать
$('#element').toggle(); // переключить видимость
$('#element').fadeIn(); // плавное появление
$('#element').fadeOut(); // плавное исчезновение
$('#element').slideUp(); // слайд вверх
$('#element').slideDown(); // слайд вниз
Метод .animate() позволяет создавать кастомные
анимации:
$('#box').animate({
width: '200px',
height: '200px',
opacity: 0.5
}, 1000); // 1000 мс
jQuery делает работу с AJAX проще и более читаемой:
$.ajax({
url: '/data',
method: 'GET',
dataType: 'json',
success: function(response) {
console.log(response);
},
error: function(xhr, status, error) {
console.error(error);
}
});
Существуют сокращенные методы:
$.get('/data', function(response) {
console.log(response);
});
$.post('/submit', {name: 'John'}, function(response) {
console.log(response);
});
Методы load() и getJSON() позволяют
получить HTML или JSON и сразу вставить/обработать данные:
$('#container').load('/content.html'); // вставка HTML
$.getJSON('/data.json', function(data) {
console.log(data);
});
jQuery поддерживает цепочки, что позволяет уменьшить количество вызовов и повысить производительность:
$('#element')
.addClass('active')
.css('color', 'red')
.slideDown(500);
Каждый метод возвращает объект jQuery, что делает возможным последовательное применение действий к одним и тем же элементам.
Для оптимизации важно измерять время выполнения
операций с DOM и jQuery. Простейший способ — использовать
console.time() и console.timeEnd():
console.time('manipulation');
$('#element').addClass('active').css('color', 'blue');
console.timeEnd('manipulation');
Для больших наборов элементов эффективнее использовать локальные переменные для выборки элементов, чтобы не искать их в DOM повторно:
var $items = $('.item'); // один раз ищем элементы
$items.addClass('highlight');
$items.css('font-weight', 'bold');
Избегание частых обращений к DOM критично для
производительности, так как каждый поиск элементов через
$() вызывает обход DOM-дерева.
$('#container').find('.item'); // быстрее, чем $('.item')
div > ul > li.active), заменяя их более прямыми
методами или хранением ссылок на элементы.Для отслеживания производительности событий можно использовать подсчет вызовов и задержку:
var start = performance.now();
$('#btn').on('click', function() {
// тяжелая операция
});
var end = performance.now();
console.log('Время обработки события: ', end - start, 'мс');
Для динамически создаваемых элементов предпочтительно делегировать события, чтобы избежать множественных обработчиков на каждом элементе:
$('#parent').on('click', '.child', function() {
// код
});
Это снижает нагрузку на память и ускоряет обработку.
jQuery возвращает объект коллекции элементов. Чтобы проверять
время выполнения операций на больших наборах, часто используют
метод .each():
$('.item').each(function(index, element) {
$(element).text('Элемент ' + index);
});
Для больших массивов элементов эффективнее избегать
.each(), применяя встроенные методы jQuery, которые уже
оптимизированы под массовые операции:
$('.item').addClass('active'); // быстрее, чем цикл с .each()
Для анализа кода jQuery применяются встроенные инструменты браузеров:
Для крупного приложения важно комбинировать методы профилирования и оптимизации: хранение выборок в переменных, минимизация поиска по DOM, использование делегирования событий и цепочек методов. Это обеспечивает высокую скорость работы интерфейсов с динамическим контентом.