JQuery $() - что он возвращает, и что такое $() [0]?

Я рассматриваю пример использования jqGrid, который является плагином jQuery.

Он рисует сетку в div с идентификатором "списка".

Он создает сетку с $('#list').jqGrid(...).

Но он заполняет сетку $('#list')[0].addJSONData(...).

Я просматривал веб-страницы для учебников по jQuery, пытаясь понять разницу, и я не нашел ничего, что касается того, что для меня - самый фундаментальный вопрос в его использовании.

Что возвращает $()? Возвращает ли объект jquery, содержащий элемент DOM? Возвращает ли объект jquery, содержащий массив элементов DOM? Возвращает ли он элемент DOM, к которому добавлены дополнительные функции jQuery?

А что тогда, $()[0]? Если $() возвратил объект jQuery, содержащий массив элементов DOM, я бы ожидал, что это будет div с id 'list', но addJSONData не является методом DOM, это метод jqGrid. Является ли jqGrid этим методом для всех элементов DOM в массиве?

===== ADDED ======

Если $() возвращает объект jquery, который содержит атрибут объектов DOM, почему $() [0] ссылается на объект, который содержит метод addJSONData? addJSONData не является методом DOM, это метод jqGrid.

6 ответов

$() возвращает набор элементов на основе селектора. Поэтому $('.help') возвращает все элементы с классом .help. $('.help')[0] предоставит вам первый элемент.


$() является селектором jquery, он принимает выражение css и превращает его в объект jQuery, $ на самом деле является сокращением jQuery, т.е. jQuery() и $() совпадают.

$()[0] просто берет объект non jQuery, поэтому, если вы выполняете $('#someId')[0], то оно равно как getElementById('someId');


$() является псевдонимом для функции jQuery(). Он возвращает объект jQuery и элементы, которые соответствуют предоставленному селектору. Если совпадающие элементы были найдены, $() [0] предоставит вам первый элемент DOM.

Подробную информацию смотрите в документации jQuery.


Объект jQuery при использовании с селектором возвращает массив элементов DOM. В этом случае $('#list') представляет массив (с одним слотом, так как это идентификатор) элементов, которые соответствуют идентификатору '#list'.


$() совпадает с вызовом jQuery(). Документация находится здесь: http://api.jquery.com/jQuery/

Помните, что вызов $(function() { }) - это ярлык для вызова $(document).ready(function() { });


$() возвращает объект jQuery, содержащий набор согласованных элементов. Индексирование в объект jQuery через $() [0] возвращает первый согласованный объект DOM.

var docWrappedInJQuery = $('document');
var bareDoc = $('document')[0];
assert((document === docWrappedInJQuery) === false);
assert((document === bareDoc) === true);

licensed under cc by-sa 3.0 with attribution.