10

假设我有以下html

<ul>
  <li id="a">a</li>
  <li id="b">b</li>
  <li id="c">c</li>
</ul>
<ul>
  <li id="d">d</li>
  <li id="e">e</li>
  <li id="f">f</li>
</ul>

如果我使用 jQuery 来抓取项目$('#e'),我如何确定e相对于其兄弟d的位置或位置/索引f?换句话说,我期望返回值 1(如果基于零的索引)或 2(如果基于一的索引),因为它是ul列表中的第二个元素。

4

5 回答 5

18

简单的:var idx = $('#e').index() // zero based

于 2012-10-19T03:03:20.200 回答
2

您可以使用.index()获取元素相对于其兄弟元素的从零开始的索引。

$('#e').index();

http://jsfiddle.net/LXS9F/

于 2012-10-19T03:05:57.373 回答
2

你也可以使用 var idx =$("#e").prevAll().size()

于 2012-10-19T03:07:04.827 回答
1

你也可以试试这个:

$(function() {
    $('ul li').each(function(idx, e) {
        $(this).on('click', function() {
            alert(idx);
        });
    });
});

唯一的麻烦是,它目前会索引li整个页面上的所有内容。

编辑

这个给出了所有li内容的索引。

$(function() {
    $('ul li').each(function(idx, e) {
        $(this).on('click', function() {
            alert($('#' + $(this).attr('id')).index());
        });
    });
});
于 2012-10-19T03:06:32.703 回答
0
function getIndex(id) {
    $('ul > li').each(function() {
        if ($(this).attr('id') == id) {
            return i;
        }
    });
    return 0;
}
于 2012-10-19T03:07:25.400 回答