2011-08-14 5 views
0

나는 이것에 가깝지만 무언가를 교차시킨다.ul에서 li의 색인 가져 오기?

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에 도달하면 다음/prev 버튼을 중지하려고합니다.

내 생각은 다음과 같습니다. 1.을 클릭하면 현재 li이 첫 번째 작업인지 (이전 작업이 진행되지 않음) 또는 마지막 작업인지 확인합니다 (다음 작업을 허용하지 않음).

하지만 지금은 어떻게 확인했는지 좀 들었습니다. .length는 단지 count를 반환합니다 .... 그래서, 현재 li이 무엇이든간에 어떻게 위치 값을 얻을 수 있습니까?

나는이 ul의 모든 li을 행렬에 넣어야한다고 생각하고 색인에 대해 확인했지만 그 작업을 얻지는 않습니다.

감사합니다.

나는 그것이 부모의 내 당신에게 그 li의 위치를 ​​줄 것이다

+0

http://api.jquery.com/index/를 보셨습니까? –

+0

[jQuery : 부모 요소를 기준으로 자식 요소의 인덱스 가져 오기] 가능한 복제본 (http://stackoverflow.com/questions/4996002/jquery-get-index-of-element-as-child-relative-to-parent) –

답변

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

에 전체 UL 목록을 넣어야 할 것입니다 생각했다.

+0

감사합니다! –

0

[거의] 절대적으로 가장 게으르고, 반드시 쉬운 것은 아니지만, 당신이 어떤 사람인지 계속 추적하는 것이 좋습니다.

마지막 linumOfLi - 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; 
     // ... 
    } 
}); 
+0

귀하의 통찰력에 감사 드리며 또한 시도 할 것입니다. –

관련 문제