0

我有一系列具有唯一日期的 div,其中包括与 div 内容相关的一周开始和一周结束。如下图所示:

<div class="dinnersWeeks">
  <div class="startingDate">8/25/2013 12:00 AM</div>
  <div class="endingDate">8/31/2013 12:00 AM</div>
  <div class="weekLinkMenus"><a href="testweek.aspx">testweek.aspx</a></div>
</div>
<div class="dinnersWeeks">
  <div class="startingDate">9/1/2013 12:00 AM</div>
  <div class="endingDate">9/7/2013 12:00 AM</div>
  <div class="weekLinkMenus"><a href="generalweek11.aspx">generalweek11.aspx</a></div>
</div>
<div class="dinnersWeeks">
  <div class="startingDate">9/8/2013 12:00 AM</div>
  <div class="endingDate">9/14/2013 12:00 AM</div>
  <div class="weekLinkMenus"><a href="generalweek12.aspx">generalweek12.aspx</a></div>
</div>

而且我一直试图确定当前日期是否介于每周 div 的开始日期和结束日期之间。

$('div.dinnersWeeks').each( function() {
    sd = new Date( $(this).find( 'div.startingDate' ).text() );
    ed = new Date( $(this).find( 'div.endingDate' ).text() );
    currentDate = new Date();
    console.log(check > sd && currentDate < ed);
});

之后,我将为本周的 div 和下周的 div 分配一个 ID。

任何指导将不胜感激。

4

2 回答 2

1

以下应该工作。我认为checked是您原始代码中的错字。我还添加了一个更改背景颜色的示例。这可以很容易地更改为根据id您的喜好设置。

JavaScript

$('div.dinnersWeeks').each( function() {
    sd = new Date( $(this).find( 'div.startingDate' ).text() );
    ed = new Date( $(this).find( 'div.endingDate' ).text() );
    currentDate = new Date();
    if(currentDate > sd && currentDate < ed) {
        $(this).css('background-color', 'red'); 
    }
});

JSFiddle:http: //jsfiddle.net/markwylde/4wuwZ/

顺便说一句,如果你想在这个项目中做很多与日期相关的任务,我会研究 moment.js 框架,或者类似的框架。这里有一篇不错的stackoverflow帖子,解释了一种可以使用它进行上述操作的简洁方法:

于 2013-08-29T23:49:33.867 回答
0

我假设您使用服务器端语言输出 HTML?如果是这种情况,我会在 div 中添加一个带有 Unix 时间的属性,然后运行比较器。我确信有一个库可以在 jQuery 中进行日期比较,但如果你不想做任何复杂的事情,你可以使用 Unix。

<div class="dinnersWeeks">
  <div class="startingDate" z-start-unix="3000392">8/25/2013 12:00 AM</div>
  <div class="endingDate" z-end-unix="3001394">8/31/2013 12:00 AM</div>
  <div class="weekLinkMenus"><a href="testweek.aspx">testweek.aspx</a></div>
</div>

然后:

$('div.dinnersWeeks').each( function() {
currentDate = Math.round(new Date().getTime() / 1000);
console.log(check > $(this).find('div.startingDate').attr('z-start-unix') && currentDate < $(this).find('div.endingDate').attr('z-end-unix'));
});
于 2013-08-29T23:46:10.933 回答