How to find out position of clicked element?

2019-08-04 04:32发布

How do I find out, in what position a list item was clicked.

So, let's say I clicked the second list item:

<li><a href="#"><span>Tab 2</span></a></li>

Then, I would get an alert saying something like:

You clicked the second list item?

JQuery Code

$('#top-betting ul li:first').addClass('current');
$('#top-betting div:not(:first)').hide();

$('#top-betting ul li span').click(function()
{
    ...?
});

Markup

<div id="tabs">
   <ul class="clearfix">
      <li><a href="#"><span>Tab 1</span></a></li>
      <li><a href="#"><span>Tab 2</span></a></li>
      <li><a href="#"><span>Tab 3</span></a></li>
   </ul>

   <div>Content 1</div>
   <div>Content 2</div>
   <div>Content 3</div>
</div>

3条回答
我只想做你的唯一
2楼-- · 2019-08-04 04:57

You're looking for the index method.

查看更多
Evening l夕情丶
3楼-- · 2019-08-04 05:21

index is the method you're after.

$('li a').click(function(e){
        var $li = $(this).parents('li');
        var $ul = $(this).parents('ul');
        alert($ul.children().index($li));
    });

Check the jsFiddle: http://jsfiddle.net/9V9D2/

查看更多
Bombasti
4楼-- · 2019-08-04 05:24

You can do it using .closest() and .index() like this:

$('#top-betting ul li span').click(function() {
   var index = $(this).closest('li').index();
});

Overall, I think this is what you're after:

$('#top-betting ul li span').click(function() {
    $("#top-betting div").eq($(this).closest('li').index()).show()
                         .siblings('div').hide();
});​
查看更多
登录 后发表回答