Засунуть выбранные элементы в array | Jquery Js
Я выбрал элементы $(".itemimg") (их несколько) и хочу их положить в пустой список var items = []; Как это сделать правильно.
Ответы (1 шт):
Если хочется прямо на ходу взять массив, в jQuery есть метод .toArray()
var items = $(".itemimg").toArray();
При этом в массив попадут именно ссылки на HTML-объекты, не jQuery-объекты. Т.е. методы jQuery перестанут работать для элементов массива.
Аналог на современном JS (оператор Spread):
let items = [...document.querySelectorAll(".itemimg")]
Если массив создается где-то в другом месте и нужно именно добавить туда элементы, можно использовать обычный перебор:
var items = [];
/* много кода */
$(".itemimg").each(function() {
items.push(this);
});
Это эквивалент предыдущего варианта...
Если хочется добавить в массив jQuery-объекты, можно записать .push( $(this) ), тогда все методы jQuery будут работать для каждого отдельного элемента.
P.s. хак: var items = $(".itemimg").toArray().map($);
Что делает map() ? Вызывает переданную функцию для каждого элемента массива и подменяет этот элемент на результат вызова функции. А $ - это как-раз функция) Поэтому .map($) оборачивает все элементы в jQuery - объекты)