5

我有一个有 li 的父母,并且给了指向 li 的指针,我想得到它作为孩子的位置。

为此,我使用了:

li.index()

现在......我还有一个条件,它应该只在这些在 css 中具有 display:block 属性的孩子中找到一个索引。

我尝试了其他一些方法,但我无法解决它。有什么想法吗?

编辑: PS:或者,更确切地说,对于那些没有 display:none 属性的。

编辑2:好吧,我这些都需要对父ID或特定ID的引用,但是如果只有一个指向li的指针怎么办,例如:

<ul>
<li>Foo</li>
<li>Bar</li>
<li>Fiz</li>
<li>Buz</li>
</ul>

li=$('li:nth-child(n)');

现在,假设我只知道一个变量,并且我希望它是那些没有 css display: none 属性的变量中的索引...

解决了这是怎么回事:

li.add(li.siblings()).filter(':visible').index( li );

感谢您用伟大的想法和不同的方法帮助我。:)

4

3 回答 3

5

使用以下标记:

<ul>
  <li>Foo</li>
  <li>Bar</li>
  <li style="display:none">Fiz</li>
  <li>Buz</li>
</ul>

我们可以确定最后一个li所有可见列表项的(从零开始的)索引:

// 2
$("li:last").index("li:visible");

如果我们要删除:visible选择器,并询问最后一个的索引:

// 3
$("li:last").index("li");

更新:使用变量

如果您有对特定列表项的变量引用:

var lastItem = $("#parent li:last");

您仍然可以在同一容器中的可见子项中获取其索引:

var index = $(lastItem).index("#parent li:visible");

更新 2:没有明确的父 ID

var index = lastItem.parent().find("li").index( lastItem );
于 2012-05-14T06:14:24.393 回答
0

试试这个答案

   var listItem = document.getElementById('bar');
   alert('Index: ' + $('li').index(listItem)); 

小提琴链接 http://jsfiddle.net/VqeHW/

于 2012-05-14T06:14:16.860 回答
0

给你的 display:none 元素一个类,然后使用 .class 选择器:

$('#theList .visible').each(function () {
  var index = $('#theList .visible').index(this);
});
于 2012-05-14T06:21:33.580 回答