получить индекс li в ul? - PullRequest
       4

получить индекс li в ul?

0 голосов
/ 14 августа 2011

Я близок к этому, но в чем-то помешан.

У меня есть этот код:

var numOfLi = $('#myList li').length;
var lastLi = numOfLi;

$('.next').click(function() {
    var current = $('#myList').find('li.on');
    current.removeClass('on');
    current.next().addClass('on');
    var grabAlt = $('.on img').attr('alt').split('|');
    var holdAlt = grabAlt;
    $('#altStuff').html('<ul class="altDescription">' +
        '<li>' + holdAlt[0] + '</li>' + '<li>' + holdAlt[1] +
        '</li>' + '<li>' + holdAlt[2] + '</li>' + '</ul>');
});

$('.prev').click(function() {
    var current = $('#myList').find('li.on');
    current.removeClass('on');
    current.prev().addClass('on');
    var grabAlt = $('.on img').attr('alt').split('|');
    var holdAlt = grabAlt;
    $('#altStuff').html('<ul class="altDescription">' +
        '<li>' + holdAlt[0] + '</li>' + '<li>' + holdAlt[1] +
        '</li>' + '<li>' + holdAlt[2] + '</li>' + '</ul>');
});

Он нажимает вперед и назад по списку Ли, назначает классof on on li, берет альтернативный текст изображения в каждом Li, анализирует его и помещает в абзац.

Это все работает великолепно и динамично, но теперь я пытаюсь остановитькнопки next / prev, когда они достигают первого / последнего li.

Я думаю: 1. при нажатии проверьте, является ли текущий li первым (не позволяйте предыдущей работе) илипоследний (не пускай на следующую работу).

Но я немного озадачен тем, как это проверить..Length возвращает только счетчик .... так, как я могу получить значение позиции того, что является текущим li?

Я думал, что мне нужно поместить все li этого ul в матрицу изатем просто проверьте его индекс, но я не получаю эту работу.

Спасибо за поиск.

Я думал, что мне нужно поместить весь список UL в

Ответы [ 2 ]

3 голосов
/ 14 августа 2011
$('li.on').index()

даст вам позицию этого li в пределах его родителя.

0 голосов
/ 14 августа 2011

[почти] абсолютно ленивым, и не обязательно самым простым, было бы отслеживать, на каком li вы находитесь.

Вы уже получили длину, поэтому вы знаете, что последний li будет иметь индекс numOfLi - 1, и вы знаете, что первый li будет иметь индекс 0.

Так что вы можете изменить его на что-то вроде этого:

var numOfLi = $('#myList li').length;
var lastLi = numOfLi - 1;
var currentLi = 0; // I think? This wasn't clear.

$('.next').click(function () {
    if (currentLi !== lastLi) {
        currentLi += 1;
        // ...
    }
});

$('.prev').click(function () {
    if (currentLi) {
        currentLi -= 1;
        // ...
    }
});
...