2010-04-13 4 views
5

Я столкнулся с следующим кодом jQuery, но не мог его понять. Что означает следующий код, особенно «$ ([])» в последней строке?

var instrument = $("#instrument"), 
    quantity = $("#quantity"), 
    orderType = $("#orderType"), 
    price = $("#price"), 
    validityDate = $("#validityDate"), 
    allFields = $([]).add(instrument).add(quantity).add(orderType).add(price).add(validityDate) 

ответ

10

Похоже, это определение массива, то add() ТРАЕКТОРИЙ DOM элементов к нему. Из инструкции:

Учитывая объект JQuery, который представляет набор элементов DOM, в .Add() метод строит новый объект JQuery из объединения этих элементов и те, переданным в метод , Аргумент для .add() может быть в значительной степени чем-либо, что принимает $(), в том числе выражение селектора jQuery, ссылки на элементы DOM или фрагмент HTML.

[] - пустой массив javascript. Как frunsi notes, это неправильное использование, и определение [] не требуется для создания пустого набора элементов, в 1.4 $() будет делать то, что вам нужно.

7

Он создает пустой набор jQuery. Такое использование неверно, хотя оно может работать. [] является излишним.

Правильно было бы только $().

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

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

http://api.jquery.com/jQuery/

2

Это создаст пустой объект JQuery - то есть с коллекцией 0 ссылочных узлов DOM.

Чаще всего вы найдете функцию jQuery $, применяемую к селектору CSS, одному или нескольким узлам из DOM. В этом конкретном случае используется последняя из этих трех «перегрузок», чтобы построить пустой объект jQuery из пустого массива, к которому затем добавляются новые узлы DOM, используя add().

Ваш конкретный пример кода немного многословным, хотя, как то же самое можно было бы достичь, как это:

var allFields = $("#instrument, #quantity, #orderType, #price, #validityDate"); 
Смежные вопросы