我接近这一点,但却在某种程度上喋喋不休。
我有这段代码:
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列表放入
答案 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;
// ...
}
});