Umbrella JS — это компактная и удобная библиотека для работы с DOM в JavaScript, которая предоставляет цепочку методов, схожих с jQuery, но с минимальным размером и высокой производительностью. Понимание параметров и возвращаемых значений функций библиотеки является ключевым для эффективного использования её возможностей.
Функция u(selector) используется для выбора элементов
DOM. Параметр selector может быть:
'.class', '#id' или
'div > p'.document.querySelectorAll() или массив.Возвращаемое значение всегда является объектом Umbrella, который содержит выбранные элементы и предоставляет методы для дальнейшей работы. Этот объект поддерживает цепочку вызовов, что позволяет выполнять несколько операций последовательно без повторного выбора элементов.
let elems = u('.item'); // elems — объект Umbrella, содержащий элементы с классом item
html([content]) — чтение или установка
HTML-содержимого:
content не передан, возвращается строка
HTML первого элемента.content передан, устанавливается содержимое всех
выбранных элементов и возвращается объект Umbrella для цепочек.let firstHtml = u('#container').html(); // возвращает HTML первого элемента
u('.item').html('<span>Новое содержимое</span>'); // возвращает объект Umbrella
text([content]) — аналогично
html(), но работает с текстовым содержимым.
val([value]) — используется для
получения или установки значений формы:
attr(name, [value]):
name, возвращается значение
атрибута первого элемента.value, атрибут устанавливается для всех
выбранных элементов, возвращается объект Umbrella.removeAttr(name) удаляет указанный
атрибут с каждого элемента и возвращает объект Umbrella.
prop(name, [value]) аналогичен
attr(), но работает с DOM-свойствами элементов, например
checked или disabled.
Методы управления классами возвращают объект Umbrella, что позволяет строить цепочки:
addClass(className) — добавляет класс к каждому
элементу.removeClass(className) — удаляет класс.toggleClass(className) — переключает класс.hasClass(className) — возвращает true,
если первый элемент содержит указанный класс.if (!u('#submit').hasClass('disabled')) {
u('#submit').addClass('active');
}
append(content) и
prepend(content):
content может быть строкой HTML, DOM-элементом или
объектом Umbrella.remove() удаляет выбранные элементы из
DOM и возвращает объект Umbrella.
empty() очищает содержимое элементов,
возвращает объект Umbrella.
on(event, handler) и
off(event, handler):
event — название события ('click',
'input' и др.).handler — функция-обработчик.trigger(event) активирует событие на
всех выбранных элементах и возвращает объект Umbrella.
width([value]) и
height([value]):
offset():
{ top, left } с
позиционированием первого элемента относительно документа.{ top, left } задаёт позицию элементов,
возвращает объект Umbrella.Эта строгая схема позволяет легко предсказывать поведение функций и строить цепочки манипуляций с DOM без необходимости создавать промежуточные переменные.
Объект Umbrella хранит выбранные элементы в массивоподобной
структуре. Методы автоматически применяются ко всем элементам, а
возвращаемые значения читаются только с первого. Исключением являются
методы вроде map(callback) и each(callback),
которые позволяют выполнять операции и собирать результаты для всех
элементов.
u('.item').each(function(el, index) {
console.log(index, u(el).text());
});
Метод map() возвращает массив
результатов, что отличается от большинства методов,
возвращающих объект Umbrella.
html, text,
attr), поддерживают также функцию в качестве
параметра, которая получает текущий индекс и текущее значение,
возвращая новое значение.DOM-элемент или Umbrella
используются для вставки или объединения элементов, поддерживая гибкость
при манипуляциях с деревом DOM.u('.item').html((i, oldHtml) => `<span>${i}: ${oldHtml}</span>`);
Эта функциональность позволяет создавать динамические изменения контента без явного перебора элементов, сохраняя компактность кода.