在js控制台中访问jquery对象

时间:2014-01-29 14:18:20

标签: javascript jquery dom console.log

当我在Chrome控制台中运行时,这不起作用:

($('.myClass > ul > li > a'))[0].closest('li')

TypeError: Object [object HTMLAnchorElement] has no method 'closest'

我认为$('。myClass> ul> li> a')返回了一个jquery对象数组,但是dir($('。myClass> ul> li> a'))显示了我它是一个单个jquery对象。是否有一种简单的方法可以像这样索引jquery对象,并在我只是在控制台中放屁时调用元素上的方法?或者我错过了关于jquery如何工作的基本信息?

6 个答案:

答案 0 :(得分:0)

您正在尝试在DOM对象上使用jQuery函数,您必须使用.eq()来获取索引

$('.myClass > ul > li > a').eq(0).closest('li') 

答案 1 :(得分:0)

[0]返回一个DOM对象。

尝试这样做:

$('.myClass > ul > li > a').eq(0).closest('li')

答案 2 :(得分:0)

您需要通过jquery再次访问数组项以使用最接近的方法,如此...

$($('.myClass > ul > li > a')[0]).closest('li');

或......你可以使用选择器......

$('.myClass > ul > li > a').first().closest('li');

答案 3 :(得分:0)

您需要使用eq()选择器。当您使用类似[i]的下标访问集合中的项目时,您实际上是从jQuery对象中解包它,并访问原始DOM节点,没有类似closest的方法。

$('.myClass > ul > li > a').eq(0).closest('li')

答案 4 :(得分:0)

  

我认为$('。myClass> ul> li> a')返回了一个jquery对象数组

这就是误解的地方。它不返回一个jQuery对象数组,它返回一个单个 jQuery对象。该对象是一个伪数组(在这种情况下是DOM元素; jQuery对象可以包含其他内容,但99%的时候它们包含DOM元素)。所以[0]为您提供了一个DOM元素,而不是一个没有closest方法的jQuery对象。

如果你想要第一个,请使用jQuery的first()eq(0)方法,它们为你提供jQuery对象中包含的第一个元素,或者你喜欢用[0]获取元素然后用$()来包装它。

// first:
$('.myClass > ul > li > a').first().closest('li')
// eq(0):
$('.myClass > ul > li > a').eq(0).closest('li')
// The long way (I wouldn't do this, just be comprehensive)
$($('.myClass > ul > li > a')[0]).closest('li')

您还可以使用jQuery的:first选择器增强功能:

$('.myClass > ul > li > a:first').closest('li')

...但这样做意味着jQuery无法传递给浏览器自己的查询选择器。

答案 5 :(得分:-1)

您可以使用以下代码..

$('.myClass')
    .children('ul')
    .children('li')
    .children('a')
    .eq(0)
    .closest('li')