Що насправді повертає jquery $?


113

Я прочитав документацію JQuery, і хоча багато уваги приділяється тому, що вам слід передати цю функцію, я не бачу жодної інформації про те, що вона насправді повертає .

Зокрема, чи завжди він повертає масив, навіть якщо знайдений лише один елемент? Чи повертається до нуля, коли нічого не знайдено? Де це документально зафіксовано?

Я розумію, що до методу повернення можна застосувати методи jquery, але що робити, якщо я хочу просто використовувати повернене значення безпосередньо?

Відповіді:


76

З опису Ріка Штраля :

Об'єкт jQuery: Обернутий набір: Селектори повертають об’єкт jQuery, відомий як "обернутий набір", що є схожою на масив структурою, що містить усі вибрані елементи DOM. Ви можете перебирати накручений набір, як масив, або отримати доступ до окремих елементів через індексатор (наприклад, $ (sel) [0]). Що ще важливіше, ви також можете застосувати функції jQuery до всіх обраних елементів.

Про повернення нічого:

Він завжди повертає масив? Чи повертається нульовим?

Ви завжди отримуєте одне й те саме, незалежно від того, чи є у ньому якийсь вміст, це питання. Зазвичай ви можете перевірити це за допомогою .val () (наприклад, $ ('. MyElem'). Val ())


1
Чудово, дякую ... це дуже корисно. Я не знав, що визначений користувачем об’єкт може водночас бути таким "схожим на масив" - я думаю, що це геній jquery.
гарпо

Запрошуємо вас - я також лише відредагував і додав повне посилання на статтю Ріка Страля - це добре прочитане.
Іван Робінсон

14
Щодо питання, яке мене сюди привело, а саме, як ви перевіряєте, чи знайдено щось, я пішов з $ (query) .length , який, здається, робив трюк.
harpo

3
що таке масив, як набір .... це масив чи об'єкт чи? ... чи можемо ми бути точними?

26

Він не повертає масив, він повертає об'єкт jQuery. Об'єкт jQuery - це те, що містить усі спеціальні методи jQuery.

Він ніколи не повертає нульового чи іншого типу. Якщо один елемент знайдений, об’єкт jQuery матиме лише одну дочірню. Якщо елементів не знайдено, об’єкт jQuery буде порожнім.


6

Функція jQuery (тобто " $") завжди повертає об'єкт jQuery у кожному випадку.


4
@harpo: зовсім не; Просто об’єкти, про які йдеться, називаються погано. "Об'єкт jQuery", він же $"Об'єкт jQuery", він же "обернутий набір".
Шон Макміллан

5

Як згадував інший відповідач, він завжди повертає об'єкт jQuery.

Цей об'єкт завжди містить масив елементів (навіть якщо це порожній масив або масив із лише одним об’єктом).

Якщо ви хочете використовувати повернутий об'єкт "безпосередньо", як у звичайному елементі, ви можете виконати одну з наступних дій:

$('selector')[0] // element
$('selector').get(0) // element
$('selector').length // number of elements in the array

3

З документації jQuery :

Сам об’єкт jQuery поводиться як масив; він має властивість довжини, і до елементів в об'єкті можна отримати доступ за їх числовими індексами [0] - [length-1]. Зауважте, що об'єкт jQuery насправді не є об'єктом Javascript Array, тому він не має всіх методів справжнього об'єкта Array, такого як join ().


2

Той факт, що $ () завжди повертає функцію jQuery, дозволяє вам ланцюжок викликів функції jQuery розсудливо.


1
запитайте! $()не повертає функцію jQuery (яка $сама є ), але повертає обгорнутий набір із усіма корисними методами.
Шон Макміллан

1

Мехнізм селекторного Jquery

$("..") , селектор jquery, використовується для вибору відповідних елементів.

Повернене значення

Він завжди повертає об’єкт jquery, схожий на масив, який має lengthвластивість,

Метод виклику на поверненому об’єкті jquery

Методи jquery можуть бути викликані на об'єкті і застосовуватись до тих обраних елементів,

Доступ до оригінального елемента за індексом

Вибрані елементи зберігаються як властивість об'єкта, їх властивість - це індексні номери, починаючи з 0,
таким чином, можна отримати доступ до індексу, починаючи з 0,
після отримання оригінального елемента, ви можете ставитися до нього, як ніби обходите document.getElementXxx().

Оберніть оригінальний елемент на об’єкт jquery

Після отримання оригінального елемента, ви можете обернути його як об’єкт jquery, зателефонувавши $(originalEle),
потім ви можете викликати методи jquery на обгорнутому об’єкті.


0

За повідомленням firebug, він повертає масив об'єктів, які відповідають вашому селектору. Але цей масив є об'єктом jQuery, який більше методів, ніж простий масив.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.