Засунуть выбранные элементы в array | Jquery Js

Я выбрал элементы $(".itemimg") (их несколько) и хочу их положить в пустой список var items = []; Как это сделать правильно.


Ответы (1 шт):

Автор решения: OPTIMUS PRIME

Если хочется прямо на ходу взять массив, в 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 - объекты)

→ Ссылка