Если вы посмотрите на документ для функции jQuery()
- обычно ее называют сокращенной версией $()
- вы увидите, что она принимает несколько различных типов и комбинаций параметров.
Синтаксис, о котором вы спрашивали:
$([])
- это синтаксис jQuery( elementArray )
, который позволяет передавать массив элементов DOM, где возвращаемым будет объект jQuery, оборачивающий эти элементы. Пропустив пустой массив, вы в основном получаете пустой объект jQuery (так же, как если бы вы передавали строку селектора, которая ничего не соответствовала, но без неэффективности попытки сначала найти совпадение).
При создании allFields
к нему добавляются три элемента DOM (где name
, email
и password
создаются непосредственно перед этим как объекты jQuery, содержащие по одному элементу DOM каждый):
allFields = $( [] ).add( name ).add( email ).add( password )
Предположительно преимущество добавления отдельных предметов, а не просто выполнения:
allFields = $("#name,#email,#password")
заключается в том, что отдельные объекты для каждого элемента также были необходимы и были бы созданы в любом случае, поэтому не нужно беспокоиться о повторном выборе их через строку запроса.
Другая вещь, которая меня озадачила, это то, что я не видел, чтобы allFields
добавлялся / добавлялся к чему-либо / любому объекту, он только создается и изменяется, я что-то упустил?
Это упоминается в двух других местах кода:
allFields.removeClass( "ui-state-error" );
// and, later
allFields.val( "" ).removeClass( "ui-state-error" );
Это довольно стандартное использование jQuery для удаления класса или установки значения всех элементов в объекте jQuery. Нет необходимости добавлять его к другому объекту.