У меня есть фильтр, который скрывает элементы таблицы, которые не проходят тест (время меньше, чем х часов).Все отлично работает с первого раза.Я выбрал время.Элементы, не прошедшие тестирование, скрыты.Я перезагружаюсь, чтобы показать все.Я пытаюсь снова фильтровать.На этот раз, когда все остальные строки скрыты, между заголовками таблицы и содержимым вставлена пустая строка.Каждый раз, когда я перезапускаю фильтр, вставляется другая строка.
Вот код:
HTML:
<div id="timeSelect">
<select id="FilterTimeList" name="FilterTimeList"><option value="">-- select Time --
</option>
</select>
</div>
<a id="filterLink" href="#" onclick="timeFilter(this);">Filter</a>
<table width="100%">
<tr>
<td>Log Id</td>
<td>Message</td>
<td>SourceStackTrace</td>
<td>awData</td>
<td>LogDate</td>
</tr>
<tr class="list">
<td class="myTitle">1</td>
<td>this is my message</td>
<td></td><td></td>
<td class="exceptionDate">5/4/2011 5:41:00 PM</td>
<td></td>
</tr>
<tr class="list">
<td class="myTitle">2</td>
<td>this is my message 2</td>
<td></td><td></td>
<td class="exceptionDate">4/27/2011 5:41:24 PM</td>
<td>
</td>
</tr>
<tr class="list">
<td class="myTitle">12</td>
<td>this is my message 12</td>
<td></td><td></td>
<td class="exceptionDate">5/16/2011 12:06:38 PM</td>
<td></td>
</tr>
</table>
Javascript:
<script src="http://code.jquery.com/jquery-1.5.1.min.js" type="text/javascript"/>
<script type="text/javascript">
var myOptions =
{
0: 'Show All',
1: 'Last 12 hours',
2: 'Last 24 hours'
};
$.each(myOptions, function (val, text) {
$('<option />').val(val).text(text).appendTo('#timeSelect select');
});
function timeFilter(a) {
$('.test').hide();
var chosenTime = $('#timeSelect select').val();
var timeCompare;
switch (chosenTime) {
case '1':
timeCompare = 12;
break;
case '2':
timeCompare = 24;
break;
}
var now = new Date();
var nowHours = now.setHours(now.getHours() - timeCompare);
var newDate = new Date(nowHours);
if (chosenTime > 0) {
var myDateClass = $('.exceptionDate')
var i = 0
$(myDateClass).each(function () {
var myDateClassVal = $(this).text();
var myDate = new Date(myDateClassVal);
if (myDate < newDate) {
$('tr:eq(' + i + ')').slideUp();
}
i++;
});
}
else {
$('.exceptionDate').parent().slideDown();
}
}
</script>