Я столкнулся со следующим кодом jQuery, но не мог понять это. Что следующее кодирует, особенно "$ ([])" часть в последней средней строке?
var instrument = $("#instrument"),
quantity = $("#quantity"),
orderType = $("#orderType"),
price = $("#price"),
validityDate = $("#validityDate"),
allFields = $([]).add(instrument).add(quantity).add(orderType).add(price).add(validityDate)
Похоже, он определяет массив, а затем add () добавляет к нему элементы DOM. Из руководства:
Учитывая объект jQuery, который представляет набор элементов DOM, метод .add () создает новый объект jQuery из объединения этих элементы и переданные в метод. Аргумент для .add () может быть почти чем угодно, что принимает $ (), включая выражение селектора jQuery, ссылки на элементы DOM или фрагмент HTML.
[]
- пустой массив javascript. Как отмечает frunsi , это неправильное использование, и определение []
не требуется для создания пустого набора элементов, в 1.4 $ ()
сделает это за вас.
Это создаст пустой объект jQuery, то есть с коллекцией из 0 узлов DOM, на которые есть ссылки.
Чаще всего функция jQuery $
применяется либо к селектору CSS, либо к одному или нескольким узлам из DOM. В этом конкретном случае последняя из этих трех «перегрузок» используется для создания пустого объекта jQuery из пустого массива, к которому затем добавляются новые узлы DOM с помощью add ()
.
Ваш конкретный пример кода, тем не менее, немного многословен, так как то же самое можно было бы достичь следующим образом:
var allFields = $("#instrument, #quantity, #orderType, #price, #validityDate");
Создает пустой набор jQuery. Такое использование неверно, хотя может сработать. []
излишни.
Правильным будет просто $ ()
.
Возврат пустого набора
Начиная с jQuery 1.4, вызов метода jQuery () без аргументов возвращает пустой набор jQuery. В предыдущих версиях jQuery это возвращало бы набор, содержащий узел документа.