jQuery 如果日期为真,更改元素 x 的 class

jQuery if date true, change class of element x

现在我还有两个问题并更新了我的代码。

  1. 我有这个 if (releaseDate <= today),为什么 Date 15.05.2015 成功了?!
  2. 当我想检查带有时间示例的日期:25.04.2015 - 09.00 am,我如何检查今天和日期何时超过 25.04.2015 == true。

我的代码:

<script src="https://code.jquery.com/jquery.js"></script> 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>

<script>
var releaseDate = {};

jQuery(".state").each(function() {
 releaseDate = jQuery(this).text() 
    
 var today = new Date();
    var dd = today.getDate();
    var mm = today.getMonth()+1;
    var yyyy = today.getFullYear();
 var hh = today.getHours();
  
    if(dd<10){
        dd='0'+dd
    } 
    if(mm<10){
        mm='0'+mm
    } 
 var today = dd+'.'+mm+'.'+yyyy; 
  
 if (releaseDate <= today) {
   jQuery(this).parent().next().find('span.label').addClass('label-success').removeClass('label-warning');
   jQuery(this).parent().next().find('span.label').text('Online');
 }     
  });
</script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">

<table class="table table-hover">
  <thead>
    <tr>
      <th align="center" valign="middle"><strong>Shop</strong></th>
      <th align="center" valign="middle"><strong>Date</strong></th>
      <th align="center" valign="middle"><strong>Status</strong></th>
      <th align="center" valign="middle"><strong>Link</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td align="center" valign="middle"><a href="#" rel="nofollow">LINK</a></td>
      <td align="center" valign="middle"><span class="state">15.05.2015</span></td>
      <td align="center" valign="middle"><span class="label label-warning">Upcoming</span></td>
      <td align="center" valign="middle"><a class="btn btn-info btn-sm" href="#" title="#" target="_blank"><strong>LINK <span class="glyphicon glyphicon-share-alt"></span></strong></a></td>
    </tr>
   <tr>
      <td align="center" valign="middle"><a href="#" rel="nofollow">LINK</a></td>
      <td align="center" valign="middle"><span class="state">25.04.2015</span></td>
      <td align="center" valign="middle"><span class="label label-warning">Upcoming</span></td>
      <td align="center" valign="middle"><a class="btn btn-info btn-sm" href="#" title="#" target="_blank"><strong>LINK <span class="glyphicon glyphicon-share-alt"></span></strong></a></td>
    </tr>
    <tr>
      <td align="center" valign="middle"><a href="#" rel="nofollow">LINK</a></td>
      <td align="center" valign="middle"><span class="state">30.04.2015</span></td>
      <td align="center" valign="middle"><span class="label label-warning">Upcoming</span></td>
      <td align="center" valign="middle"><a class="btn btn-info btn-sm" href="#" title="#" target="_blank"><strong>LINK <span class="glyphicon glyphicon-share-alt"></span></strong></a></td>
    </tr>
    <tr>
  </tbody>
</table>

我希望有人能解释或告诉我!

我看到您想更改下一个 table 单元格 tdspan 的 class。您可以使用 $(this).parent().next() 找到该单元格,然后使用 .find('.label') 找到您要为其更改 class 的 span

然后,您可以使用 removeClass()addClass() 的组合或仅使用 toggleClass() 方法:

if (releaseDate == today) { 
    $(this).parent().next().find('.label').removeClass('label-warning').addClass('label-success');  
    //or possible
    $(this).parent().next().find('.label').toggleClass('label-warning label-success');              
}   
if (releaseDate == today) {
    $(this).parent().next().find('span.label')
        .addClass('label-success').removeClass('label-warning');
}

做你想做的事。 Demo here.

removeClass() and addClass() 是不言自明的。 parent() goes to the surrounding <tr> element, next() get the immediately following siblings, and find() 在此实例中查找带有 class 标签的跨度。