Что означает $([]) в jQuery?

var username = $("#username"),
                password = $("#password"),
                allFields = $([]).add(username).add(password);

Что такое allFields? Что такое $([])?

Будучи новичком в Javascript/jQuery, я никогда раньше не видел эту нотацию $([]), и меня интересуют связанные с ней методы.

Учитывая, что его "$ ([])", это сложно найти. И поиск в Google массивов в Javascript (угадать, что вещь - это какой-то массив) дает типичные массивы, которые мне знакомы.

Итак, что такое $([])? Может ли кто-нибудь указать мне на документацию? Мне интересно узнать, как использовать эту странную вещь.

Ответы

Ответ 1

Функция jQuery принимает массив узлов DOM.

$([document.body]) например, который вернет объект jQuery, обернув все элементы DOM, переданные в этом массиве. Однако, поскольку в вашем примере нет объекта DOM для начала, и это просто пустой массив, нет необходимости даже передавать пустой массив.

Вызов функции jQuery без аргументов возвращает пустой набор. Взятые из документов jQuery,

Возврат пустого набора

Как и в jQuery 1.4, вызов метода jQuery() без аргументов возвращает пустой набор jQuery. В предыдущих версиях jQuery это возвращало бы набор, содержащий документ node.

Итак, ваш пример будет работать так же, если вместо него вызывается

$().add(username).add(password);

Как уже упоминались другие ответы, и, как говорят документы, необходимо передать пустой массив до версии 1.4.

Ответ 2

[] это пустой массив. Обертка с помощью $() перезаряжает его с помощью функций jQuery.

В javascript вы можете создать массив таким образом:

var foo = [];

Ответ 3

Это пустой массив, который передается при создании объекта jQuery. Предположительно, чтобы что-то инициализировать.

Не обязательно, по крайней мере, не в последних версиях jQuery.

Вот пример без массива: http://jsfiddle.net/MAzLN/

Прекрасно работает, поскольку alert() показывает один элемент в объекте.

jQuery инициализирует свойство length значением 0 при создании объекта, поэтому я не уверен, что это за цель, если только это не требуется в прошлом.

Ответ 4

Я считаю, что он создает пустой объект коллекции jQuery.