2012-04-26 3 views
2

나는 내 생애 동안 이것을 알 수 없다. 요일을 기준으로 한 7 개의 탭, .past, .today 및 .future의 세 가지 클래스가 있어야합니다.조건부 .addClass()

저는 .today를 사용하여 멋지게 .getDay()를 사용하고 있습니다. 하지만 문제가 모든 할당하는 데 .today이 .past하기 전에 와서 모든 .today 후 오는 리튬의이 .future하기 위해 리튬의

HTML :

<ul class="days-of-the-week tabs clearfix"> 
    <li class="sunday"><span><a href="#">Sunday</a></span></li> 
    <li class="monday"><span><a href="#">Monday</a></span></li> 
    <li class="tuesday"><span><a href="#">Tuesday</a></span></li> 
    <li class="wednesday"><span><a href="#">Wednesday</a></span></li> 
    <li class="thursday"><span><a href="#">Thursday</a></span></li> 
    <li class="friday"><span><a href="#">Friday</a></span></li> 
    <li class="saturday"><span><a href="#">Saturday</a></span></li> 
</ul> 

jQuery를 :

// Add class .today to the correct day-of-week tab 
$('ul.days-of-the-week li:eq(' + new Date().getDay() + ')').addClass('today'); 

감사합니다. 사전에!

답변

4

prevAll()을 사용하면 현재 요소의 모든 형제를 가져올 수 있으며 다음 형제 인 경우 nextAll()을 사용할 수 있습니다. prevAll에 대한

문서 : http://api.jquery.com/prevAll/

nextAll에 대한 문서 : 그것은 쉽게 이러한 사용 http://api.jquery.com/nextAll/

. JSFiddle : http://jsfiddle.net/qYt2p/

var today = $('ul.days-of-the-week li:eq(' + new Date().getDay() + ')').addClass('today'); 
today.prevAll().addClass("past"); 
today.nextAll().addClass("future");​ 
+0

합니다. +1 –

+0

당신은 환영합니다 :) –

1

난 당신이 netxAll 및 prevAll 찾고있는 생각 : 매우 잘 작동

var today = $('ul.days-of-the-week li:eq(' + new Date().getDay() + ')'); 
today.prevAll().addClass('past'); 
today.addClass('today'); 
today.nextAll().addClass('future'); 
+0

왜 COPY 응답입니까? – Starx

+0

prevAll에 괄호가없고 코드에 nextAll이 전혀 없습니다. – Starx

+0

Starx : 답변이 타이핑을 할 때 Jack이 분명히 빠르기 때문에 타이핑을 시작할 때 아무 것도 없었습니다. 누락 된 괄호가 수정되었습니다. 감사합니다. –

0
$('ul.days-of-the-week li').each(function() { 
    var c = new Date().getDay() <= $(this).index() ? new Date().getDay() == $(this).index() ? 'today' : 'future' : 'past'; 
    $(this).addClass(c); 
});