2013-08-01 4 views
0

Означает ли это, что $("ul")[0] не является объектом jQuery, потому что он работает, когда я использую $($("ul")[0]).find("li"), хотя он выглядит немного уродливым.

У кого-нибудь есть идеи, почему $("ul")[0] не может быть использован для find?

ответ

5

Это верно; объект jQuery действует как расширение массива элементов DOM. Если вы получаете доступ к любому из них по индексу, вы получаете необработанный объект DOM, а не другой объект jQuery. Если вы хотите получить доступ к объекту JQuery для всего лишь один из элементов объекта представляет, используйте eq:

$('ul').eq(0).find('li') 
1

Вы правы - $("ul")[0] не является объектом jQuery. Это узел DOM (точнее, HTMLUListElement).

Причина в том, что вы можете построить объект jQuery из узла DOM, передав его как параметр функции $. Например, $("<ul>") сделает узел ul и перенесет его в объект jQuery.

1

вы можете использовать $("ul:eq(0)") или $("ul").eq(0) вместо

0

Вы должны использовать $ («уль»). экв (0) вместо $ ("уль") [0]

+0

$ ("ul") никогда не возвращает массив. Он возвращает стек объектов jQuery. – musicnothing

1

Вы можете использовать, как это

$("ul").index(0); 

или

$("ul").eq(0) 


$("ul")[0] is a DOM element