jquery index()有一些特定的选择器......?

时间:2012-05-14 06:07:59

标签: javascript jquery jquery-selectors indexing html-lists

我有一个李的父母,给了一个李的指针,我想让它成为一个孩子的位置。

为此我用过:

li.index()

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

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

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

编辑2 :我这些都需要引用父或特定ID,但如果只有指向li的指针,例如:

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

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

现在,让我们假设我只知道一个变量,并且我希望它们的索引中没有css显示:none propery ...

解决了这就是它:

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

感谢您帮助我提出了很好的想法和不同的方法。 :)

3 个答案:

答案 0 :(得分: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 );

答案 1 :(得分:0)

尝试这个问题

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

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

答案 2 :(得分:0)

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

$('#theList .visible').each(function () {
  var index = $('#theList .visible').index(this);
});