如何获得$(this)的eq()?

时间:2011-04-02 19:51:03

标签: javascript jquery

这是我的代码:

$('div.menu > ul > li > a').click(function(e) {

    alert($(this).eq());
    e.preventDefault();

});

<div class="menu">

    <ul>
        <li><a href="">Animals</a></li>
        <li><a href="">Cars</a></li>
        <li><a href="">Sports</a></li>
    </ul>

</div><!-- menu -->

我的尝试警告对象对象错误。如果应该返回被点击链接的数字位置。例如,如果您单击动物,它应该警告1(不确定eq计数是否从0开始,如阵列,在这种情况下它应该提醒),如果您点击体育,它应该警告3,依此类推......

2 个答案:

答案 0 :(得分:1)

你所追求的功能是$(this).index(),它是从零开始的。

您可以使用.index()的零参数版本,并将处理程序放在<li>标记而不是<a>标记上,从而使功能更简单 - 请参阅http://jsfiddle.net/udKJf/

$('div.menu > ul > li').click(function(e) {
    alert($(this).index());
    e.preventDefault();
});

将处理程序放在<li>标记上允许jQuery自动计算基于兄弟的索引。

或者,让选择器引用<a>标签并使用$(this).parent().index()

答案 1 :(得分:1)

Eq从0开始,要获得它,你需要有一个参考列表,试试:

var links = $('div.menu > ul > li > a');
links.click(function(e) {
         var index = links.index($(this));
         alert(index);
         e.preventDefault();
});

在线示例: http://jsfiddle.net/tYeV4/