2016-05-20 109 views
2

虽然试图获得更好的理解JQuery我碰到这个question链接方法返回的JQuery对象

我得到了什么,从它的JQuery选择返回数组状结构,你可以遍历像一个数组来了。我的问题是我在什么情况下可以做这样的事情:

$('.foo')[1].someFunction(); 

,而不会导致错误:$(...)[1].someFunction is not a functionsomeFunction是指像appendTo()text()定义JQuery功能)。

此外,为什么它会导致一个错误,最好的方法(如果可能的话)使用[]符号后链接一个函数?

回答

2

你可以做一些类似$('.foo').first()$('.foo').eq(1),这是访问jQuery选择器结果的更习惯的方式。

作为@Amit笔记,底层数组结构中的对象是本机DOM元素。在jQuery方法链中使用它们的愚蠢但有启发性的方式是$($('.foo')[1]).whatever()

获得评论中提出的问题时,本机DOM元素拥有自己的(相当大的)一组可以在其上调用的方法。例如,所有HTML元素都有this very much worth knowing interface可用,并且每种特定类型的元素都有它自己的扩展。

+0

你可以看看我在评论部分询问@Amit的问题吗? – webDev

+0

+0

@webDev为我的答案添加了更多文档。整个网站是真正获得对HTML/CSS/JS的理解,它们如何相互作用以及可以做什么和不可以做什么的巨大资源。 –

3

under what circumstances can I do something like this:

$('.foo')[1].someFunction(); 

任何情况下。 “数组”中的对象是本地DOM对象,它们不支持jQuery函数。

+0

我见过人们做这样的事情:'$('。foo')[0] .play()'并且它工作。我知道'play()'是一个js函数。这就是为什么它有效吗? – webDev

+0

我不知道你见过什么。 – Amit

+0

http://stackoverflow.com/questions/2988050/html5-audio-player-jquery-toggle-click-play-pause。寻找@edwardsharp的回复 – webDev

1

当您使用数组选择器访问jQuery对象时,将返回DOM元素。由于它不再是jQuery对象,它将不再有权访问jQuery的方法和属性。

您可以尝试使用类似$('.foo').eq(1)之类的东西,然后将jQuery链接关闭。