在javascript数组中查找元素并返回匹配元素的位置

时间:2012-11-02 19:25:22

标签: javascript jquery

我正在掏出我的大脑,但希望有人能在几次尝试失败后提供帮助。

我有一个像这样的HTML列表:

<ul>
<li><span class="current"></span></li>
<li><span class="normal"></span></li>
</ul>

我正在试图找到一种方法来查找此列表中的li元素,该元素具有类当前的跨度以及它在ul中的数字。所以,在这种情况下,它将是1。

我尝试使用不同的jquery函数,但我似乎无处可去。这就是它现在的样子:

var list = $('ul li');
$.each(list, function(key, value) {
    if( $(this).find('.current') ) {
        alert(key);
    }
});

这只是警告0和1,本质上意味着它不起作用。有谁知道我在做什么有什么问题?

3 个答案:

答案 0 :(得分:3)

0不是1(JavaScript是零索引的),但是:

$('li:has(span.current)').index();

JS Fiddle demolarger-table example

或者您可以使用:

$('span.current').parent().index();

JS Fiddle demolarger-table example

或者:

$('span.current').closest('li').index();

JS Fiddle demolarger-table example

参考文献:

答案 1 :(得分:1)

jQuery选择器(从不)返回falsey值。如下所示:

$(this).find('.current')

将始终在if语句中返回true。检查存在的一种简单方法是使用length属性,该属性表示从选择器中找到了多少元素。

if ($(this).find('.current').length > 0) {

答案 2 :(得分:0)

您的代码循环遍历列表中的每个项目并显示其密钥。

你想要的更像是:

$('mylist').find('.current').each(function(key, value)
    {
        alert(key);
    }

这将仅循环通过类“current”的项目。