2

我这辈子都想不通。我需要为一系列 7 个选项卡(基于星期几)、.past、.today 和 .future 分配三个类

我的 .today 使用 .getDay() 可以很好地工作,但是我无法将 .today 之前的所有 li 分配给 .past,以及 .today 之后的所有 li 分配给 .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

3 回答 3

4

您可以使用prevAll()获取当前元素的所有先前兄弟姐妹,以及nextAll()所有以下兄弟姐妹。

文档prevAllhttp ://api.jquery.com/prevAll/

文档nextAllhttp ://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");​
于 2012-04-26T23:38:40.567 回答
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');
于 2012-04-26T23:40:57.503 回答
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);
});
于 2012-04-26T23:50:32.080 回答