Как узнать позицию нажатого элемента?

Как узнать, в какой позиции был нажат элемент списка.

Итак, допустим, я щелкнул второй элемент списка:

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

Затем я получу предупреждение, говорящее что-то вроде:

Вы нажали второй элемент списка?

Код JQuery

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

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

Разметка

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

person Keith Donegan    schedule 01.07.2010    source источник


Ответы (3)


Вы можете сделать это, используя .closest() и .index() следующим образом:

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

В целом, я думаю, это то, что вам нужно:

$('#top-betting ul li span').click(function() {
    $("#top-betting div").eq($(this).closest('li').index()).show()
                         .siblings('div').hide();
});​
person Nick Craver    schedule 01.07.2010
comment
Бинго, спасибо, Ник. Я не могу принять это еще 10 минут - person Keith Donegan; 01.07.2010

index - это метод, который вам нужен.

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

Проверьте jsFiddle: http://jsfiddle.net/9V9D2/

person Jamiec    schedule 01.07.2010
comment
Все это не нужно, $(this).closest('li').index() работает :) .index() без аргументов получает индекс элемента относительно его братьев и сестер. - person Nick Craver; 01.07.2010
comment
Спасибо, только что увидел ваш ответ. Я должен сказать, что index() — это единственный метод jQuery, который доставляет мне больше всего проблем. - person Jamiec; 01.07.2010

Вы ищете метод index.

person SLaks    schedule 01.07.2010