为什么我的$(selector).index(过滤器选择器)返回错误的结果?

时间:2013-05-15 21:29:03

标签: javascript jquery dom jquery-mobile filtering

我有一个变量pages

pages = $("[data-role=page]:not([data-url])");

[
<div data-role=​"page" id=​"home" class=​"home ui-page ui-body-c" tabindex=​"0" style=​"min-height:​ 548px;​">​…​</div>​
, 
<div data-role=​"page" id=​"login" class=​"login ui-page ui-body-c ui-page-active" tabindex=​"0" style>​…​</div>​
]

但是当我使用pages.index(".ui-page-active")时,我得到-1 - 结果不正确。

然而,当我搜索pages.index(".ui-page")时,我得到了1 - 正确的结果。

有什么想法吗?

更新:

pages.index( $('.ui-page-active') )返回1 - 正确的结果!但为什么the selector option没有工作?

1 个答案:

答案 0 :(得分:3)

.index()方法获取当前选择的第一个元素,并在您传递的选择器的所有元素中搜索它。的 See the docs

<强> It may help to look at the responsible code

所以当我这样做时:

$('.a').index('.b');

它将为您提供所有找到的.a元素中第一个.b元素的索引。

你想要的似乎与你所拥有的相反,所以可能:

// Find '.ui-page' within the '[data-role=page]:not([data-url])' set:
$('.ui-page').index('[data-role=page]:not([data-url])');

但请注意,这只会查找与您传递给.ui-page的选择器匹配的元素中的第一个index(...)元素。