views:

24

answers:

3

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>
A: 

You're looking for the index method.

SLaks
+2  A: 

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();
});​
Nick Craver
Bingo, thanks Nick. I can't accept it for another 10 minutes yet
Keith Donegan
+1  A: 

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/

Jamiec
There's no need for all that, `$(this).closest('li').index()` works :) `.index()` with no arguments gets the index of the element with respect to its siblings.
Nick Craver
Thanks, just saw your answer. I must say index() is the one jQuery method that gives me most problems.
Jamiec