得到一个李的索引?

时间:2011-08-14 19:17:22

标签: jquery traversal

我接近这一点,但却在某种程度上喋喋不休。

我有这段代码:

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>');
});

点击向前和向后点击Li的列表,为li分配一个“on”类,在每个Li中抓取图像的alt文本,解析并将其放入段落中。

这一切都很有效且动态,但现在我试图在他们到达第一个/最后一个li时停止下一个/上一个按钮。

我的想法是:1。点击后,检查当前的li是第一个(不要让上一个工作)还是最后一个(不要让下一个工作)。

但是,我现在对如何检查它有点冥想。 .length只返回计数....所以,我怎样才能获得当前li的位置值?

我在想我必须把这个ul的所有li放到一个矩阵中,然后检查它的索引,但我没有得到那个工作。

感谢您的光临。

我在想我必须将整个UL列表放入

2 个答案:

答案 0 :(得分:3)

$('li.on').index()

将为您提供li在其父级中的位置。

答案 1 :(得分:0)

[几乎]绝对最懒,但不一定最简单,就是跟踪你所在的li

您已经获得了长度,因此您知道最后li的索引为numOfLi - 1,并且您知道第一个li的索引为0. / p>

所以你可以把它改成这样的东西:

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;
        // ...
    }
});