0

我正在为此绞尽脑汁,但希望在几次失败的尝试后有人能提供帮助。

我有一个这样的 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,本质上意味着它不起作用。有谁知道我在做什么有什么问题?

4

3 回答 3

3

不是(JavaScript 是零索引),而是01

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

JS Fiddle 演示和一个更大的表示例

或者你可以使用:

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

JS Fiddle 演示和一个更大的表示例

或者:

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

JS Fiddle 演示和一个更大的表示例

参考:

于 2012-11-02T19:26:53.640 回答
1

jQuery 选择器(从不)返回错误值。所以像:

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

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

if ($(this).find('.current').length > 0) {
于 2012-11-02T19:40:21.110 回答
0

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

你想要的更像是:

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

这将仅循环通过具有“当前”类的项目。

于 2012-11-02T19:31:00.233 回答