我正在掏出我的大脑,但希望有人能在几次尝试失败后提供帮助。
我有一个像这样的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,本质上意味着它不起作用。有谁知道我在做什么有什么问题?
答案 0 :(得分:3)
0
不是1
(JavaScript是零索引的),但是:
$('li:has(span.current)').index();
JS Fiddle demo和larger-table example。
或者您可以使用:
$('span.current').parent().index();
JS Fiddle demo和larger-table example。
或者:
$('span.current').closest('li').index();
JS Fiddle demo和larger-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”的项目。