Umbrella JS — лёгкая библиотека для работы с DOM, событиями и
коллекциями элементов. Одной из ключевых возможностей является работа с
массивоподобными коллекциями элементов,
предоставляемыми выборкой u(selector). Эти коллекции ведут
себя схоже с массивами JavaScript, но содержат методы, оптимизированные
для манипуляции DOM.
each позволяет
перебрать все элементы коллекции и выполнить для каждого заданную
функцию:u('li').each(function(el, index) {
console.log(index, el.textContent);
});
el — текущий DOM-элемент коллекции.index — позиция элемента в коллекции.Коллекция u() сама не изменяется, метод используется
исключительно для обработки элементов.
let texts = u('li').map(function(el) {
return el.textContent.toUpperCase();
});
console.log(texts);
Отличие от each в том, что map возвращает
массив результатов.
let activeItems = u('li').filter(function(el) {
return el.classList.contains('active');
});
Возвращается новая коллекция Umbrella, содержащая только
выбранные элементы.
u('li').addClass('highlight');
u('li').removeClass('inactive');
u('li').toggleClass('selected');
u('a').attr('href', '#new-link');
u('a').removeAttr('target');
Если в attr передан только ключ, возвращается значение
атрибута первого элемента:
let href = u('a').attr('href');
u('div').css('color', 'red');
u('div').css({
'font-size': '18px',
'margin-top': '10px'
});
Метод поддерживает передачу объекта с несколькими свойствами или пары
ключ-значение.
Umbrella JS возвращает специальный объект, который
поддерживает методы массивов, но не является настоящим массивом
JavaScript. Для применения стандартных методов массива используется
toArray():
let elements = u('p').toArray();
elements.forEach(el => console.log(el.textContent));
Метод toArray преобразует коллекцию в чистый массив
DOM-элементов.
u('li').eq(2).addClass('selected');
u('li').first().css('font-weight', 'bold');
u('li').last().css('font-style', 'italic');
Array.prototype.slice:u('li').slice(1, 3).addClass('partial');
let items = u('li.active').add('#special-item');
concat после toArray():let allItems = u('li').toArray().concat(u('p').toArray());
u('ul').find('li.active').css('color', 'green');
u('ul').children().addClass('child-item');
u('li').parent().addClass('has-children');
u('li').parents('div.container').css('border', '1px solid black');
Umbrella JS не предоставляет встроенные методы сортировки коллекций
напрямую, но их можно комбинировать с toArray() и
стандартными методами массивов:
let sorted = u('li').toArray().sort((a, b) => a.textContent.localeCompare(b.textContent));
После сортировки можно снова обернуть элементы в Umbrella:
u(sorted).addClass('sorted');
u('li').data('index', 10);
let index = u('li').data('index');
u('li').on('click', function(e) {
console.log('Clicked:', this.textContent);
});
u('li').off('click');
toArray().each, map,
filter) обеспечивают удобное и эффективное
управление коллекциями DOM.Эффективное использование этих методов позволяет работать с массивоподобными структурами в Umbrella JS с минимальным кодом и высокой производительностью.