Я создал таблицу HTML, которая кодирует столбец "месяц". То, что я хотел бы сделать, это показать только строки, соответствующие текущему месяцу (это я уже выполнил), но также и предыдущий месяц. Спасибо заранее. Просто FYI, я новичок в jQuery. Это то, что я до сих пор:
HTML:
<table class="theTable">
<tr>
<th class="theMonth">Month</th>
<th>Value</th><th>Month Number</th>
</tr>
<tr>
<td class="theMonth">October</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td class="theMonth">November</td>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td class="theMonth">December</td>
<td>1</td>
<td>3</td>
</tr>
<tr>
<td class="theMonth">January</td>
<td>1</td>
<td>4</td>
</tr>
<tr>
<td class="theMonth">February</td>
<td>1</td>
<td>5</td>
</tr>
<tr>
<td class="theMonth">March</td>
<td>1</td>
<td>6</td>
</tr>
<tr>
<td class="theMonth">April</td>
<td>1</td>
<td>7</td>
</tr>
<tr>
<td class="theMonth">May</td>
<td>1</td>
<td>8</td>
</tr>
<tr>
<td class="theMonth">June</td>
<td>1</td>
<td>9</td>
</tr>
<tr>
<td class="theMonth">July</td>
<td>1</td>
<td>10</td>
</tr>
<tr>
<td class="theMonth">August</td>
<td>1</td>
<td>11</td>
</tr>
<tr>
<td class="theMonth">September</td>
<td>1</td>
<td>12</td>
</tr>
</table>
Jquery:
$(function(){monthColumn();});
function monthColumn()
{
rows = [];
$('.theMonth').each(function()
{
var rowText = $(this).text();
rows.push(rowText);
var theDate=new Date();
var month=new Array();
month[0]="October";
month[1]="November";
month[2]="December";
month[3]="January";
month[4]="February";
month[5]="March";
month[6]="April";
month[7]="May";
month[8]="June";
month[9]="July";
month[10]="August";
month[11]="September";
var n = month[theDate.getMonth()-1];
var m = month[theDate.getMonth()-2] //Testing
if ( rowText == n)
{
$('.theMonth').not(this).parent().hide();
}
});
}
Измените это:
$('.theMonth').not(this).parent().hide();
к этому:
$('.theMonth').parent().hide();
$(this).parent().show();
$(this).parent().prev().show();
Это сумасшедший рушится, поскольку способ, которым вы делаете это в цикле, не оптимизирован, это просто показывает вам пример того, что вы могли бы сделать. Это скрывает их всех, а затем показывает те, которые вы хотите. Вы могли бы поочередно получить все из них, пройти через них и скрыть их каждый отдельно, не скрывая тех, которые вы хотите.
Лучше:
if ( rowText !== n && rowText !== m)
{
$(this).parent().hide();
}
Это на самом деле лучше в том, что он скрывает строку, поскольку она настраивает ее, когда она обнаруживает ее не в "шоу" прохладного клуба.
PS, вам не нужно делать этот месячный массив внутри цикла.each... вы могли бы просто сделать это за пределами этого цикла.