Найдите число нажатых li

У меня есть стандартный список...

        <ul>
            <li><a href="#">blah 1</a></li>
            <li><a href="#">blah 2</a></li>
            <li><a href="#">blah 3</a></li>
            <li><a href="#">blah 4</a></li>
        </ul>

И мой jQuery:

$('ul li a').live('click', function() {
    var parent = $(this).parent('li');
});

Я хочу узнать, является ли родительская позиция li в списке щелкнутой ссылки, например. нажатие на blah 3 даст мне 2, blah 4 даст 3 и т.д.

Любые идеи?

Ответ 1

$('ul li a').live('click', function() {
    console.log($(this).parent('li').index());
});

Дает вам то, что вы хотите, но имейте в виду, что это индексы на основе 0 - то есть первая позиция - индекс 0, последняя позиция - 3.

Документация метода jQuery index()

Ответ 2

вы можете получить индекс элемента с индекс jquery`

$('ul li a').live('click', function() 
{
    var index =  $(this).index();
});    

Ответ 3

Не нужно jQueryfy это:

$('ul li a').live('click', function() {
    var position = 0;
    var currentNode = this;
    var firstNode = currentNode.parentNode.firstChild;
    while(firstNode != currentNode) {
        position++;
        currentNode = currentNode.previousSibling;
    }
    alert(position);
});

Ответ 4

Метод index должен делать то, что вы хотите.

Ответ 5

$(function() {
    $('ul li a').live('click', function() {
        var parent = $(this).parent('li');
        alert(parent.prevAll('li').size());
    });
});

Ответ 6

Я знаю, что это старый пост, но .live теперь устарел в jQuery 1.7 и удален в jQuery 1.9.

Альтернативой является использование .delegate:

$('ul li').delegate('a','click', function() {

    alert($(this).parent('li').index());

});