2015-12-07 3 views
0

Если у меня есть некоторые наценки, которая выглядит как:Почему селектор jquery возвращает массив вместо самого элемента?

<div class="box"> 
</div> 

почему делает селектор JQuery $('.box') вернуть элемент в массиве?

я получить выход в консоли как:

[<div class="box"></div>] 

и нет:

<div class="box"></div> 
+4

Потому что так оно и было спроектировано, хотя это не массив. Это объект jQuery. –

+0

Если он может вернуть либо коллекцию, либо один элемент, вам нужно будет ввести-проверить результат, чтобы узнать, что вы можете с ним сделать. Это было бы серьезным сопротивлением. –

+0

Ну, технически это * делает * возвращает элемент, который вы хотите в форме объекта jQuery, даже думал, что он может быть в форме массива, это не должно влиять на то, что вы делаете. Имеет ли это? –

ответ

0

Потому что это не массив, это массив-подобный объект JQuery. Вы можете использовать объект, который возвращает $() так же, как и вы, когда вы соединяете свои методы вместе, как $().css().append().

Другая причина, по которой это похоже на массив, состоит в том, что селектор, который вы предоставляете, может на самом деле захватить много разных элементов, и большинство методов, которые вы можете вызвать для объекта jQuery, будут влиять на все элементы dom, выбранные вашим селектором.

Надеюсь, это поможет, и я надеюсь, что вы сделаете немного больше исследований в jQuery и как это работает. Это чрезвычайно полезная библиотека, которая, по-видимому, вы еще не полностью понимаете.

Редактировать: Как уже упоминалось, если вы просто хотите получить элемент из объекта jQuery и просто используете jQuery в качестве селектора, вы можете использовать вспомогательные элементы скобок $(...)[0] или метод get $(...).get(0).

0

Из описания Rick Strahl

Селекторы возвращают объект JQuery, известный как «обернутого набора», который является массивом, как структура, которая содержит все выбранные элементы DOM. Вы можете перебирать завернутый набор как массив или обращаться к отдельным элементам с помощью индексатора (например, $ (sel) [0]). Что еще более важно, вы также можете применять функции jQuery для всех выбранных элементов. (Действительный) селектор

2

А не гарантировано, чтобы соответствовать один элемент, но является гарантированно представляют собой набор соответствующих элементов, которые могут

  • быть пустым,
  • есть один элемент, , или
  • имеют более одного элемента.

Этот набор лучше всего представляет объект коллекции, содержащий ноль или более элементов.

Если у вас была разметка, состоящая из более чем одного элемента .box, что бы вы ожидали, что jQuery вернется, если не коллекция, состоящая из обоих элементов? document.querySelector() отличается тем, что метод предназначен для возврата первого элемента соответствия для каждой спецификации, поэтому существует document.querySelectorAll() (это то, что jQuery использует внутри, прежде чем по умолчанию выполнить свою собственную реализацию).

Смежные вопросы