我使用jQuery隐藏表格行直到今天的日期,这有效:
$('.date_display').each(function(i, cell){
if (cell.scope == 'header') {
if ($(cell).text() == today){
return false;
}
}
$(cell).parent().hide();
});
但我似乎无法让nextUntil
工作(jQuery v 1.11.1):
var showMe = $("th.mz_date_display:contains('"+today+"')");
$('th.date_display').first().nextUntil(showMe, 'tr').hide();
showMe
正在控制台中返回一个对象。
HTML的MWE:
<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>
答案 0 :(得分: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
中的工作示例