2016-03-02 34 views
0

我使用jQuery来隐藏表中的行,直到今天的日期和这个作品:.nextUntil从第处通过指定日

$('.date_display').each(function(i, cell){ 
    if (cell.scope == 'header') { 
     if ($(cell).text() == today){ 
       return false; 
      } 
     } 
     $(cell).parent().hide(); 
    }); 

但我似乎无法得到nextUntil工作(jQuery的v 1.11 0.1):

var showMe = $("th.mz_date_display:contains('"+today+"')"); 
$('th.date_display').first().nextUntil(showMe, 'tr').hide(); 

showMe正在返回在控制台的对象。

MWE HTML的:

<table> 
     <tr> 
      <th class="date_display">Monday</th> 
     </tr> 

     <tr> 
      <td class="date_display">some text</td> 
     </tr> 

     <tr> 
      <td class="date_display">some text</td> 
     </tr> 

     <tr> 
      <th class="date_display">Tuesday</th> 
     </tr> 

     <tr> 
      <td class="date_display">some text</td> 
     </tr> 

     <tr> 
      <td class="date_display">some text</td> 
     </tr> 

     <tr> 
      <th class="date_display">Wednesday</th> 
     </tr> 

     <tr> 
      <td class="date_display">some text</td> 
     </tr> 

     <tr> 
      <td class="date_display">some text</td> 
     </tr> 
    </table> 
  1. Fiddle of non-nextUntil way
  2. Attempt with nextUntil
+0

工作的例子就是,你可以创建一个演示小提琴,所以我们可以看到你们全部的javascript ,HTML,CSS等? – Yass

+0

在您的问题中发布您的HTML。 – j08691

+0

这里是我现在正在做的方式的一个小提琴:https://jsfiddle.net/mikeill/58cpt90f/1/ – MikeiLL

回答

1

我认为问题在于您使用nextUntil的方式。它只返回selector的兄弟姐妹。在您的代码中,$('th.date_display')指的是th元素的同胞,而每个th在其tr中没有任何兄弟。为了解决这个问题,需要中tr元素,而不是th要搜索的元素:

(function($){ 
    $(document).ready(function($) { 
     var showMe = $("th.date_display:contains('Wednesday')").closest("tr"); 

     $('th.date_display').closest("table").find("tr:first").nextUntil(showMe, 'tr').addBack().hide(); 

    }); // On doc ready 

})(jQuery); 

查核在JSFIDDLE