Use :contains
this way:
$("table:contains(" + month + ")")
.find("td:contains(" + day + ")")
.addClass('today');
var month = "October";
var day = 16;
$("table:contains(" + month + ")").find("td:contains(" + day + ")").addClass('today');
table {
background: grey;
}
.today {
background: yellow;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table style="width:50%">
<thead>
<tr>
<th colspan="4">Feburary</th>
</tr>
</thead>
<tbody>
<tr>
<td>15</td>
<td>17</td>
<td>16</td>
<td>18</td>
</tr>
</tbody>
</table>
<br />
<table style="width:50%">
<thead>
<tr>
<th colspan="4">October</th>
</tr>
</thead>
<tbody>
<tr>
<td>15</td>
<td>17</td>
<td>16</td>
<td>18</td>
</tr>
</tbody>
</table>
<br />
<table style="width:50%">
<thead>
<tr>
<th colspan="4">March</th>
</tr>
</thead>
<tbody>
<tr>
<td>15</td>
<td>17</td>
<td>16</td>
<td>18</td>
</tr>
</tbody>
</table>
<br />
<table style="width:50%">
<thead>
<tr>
<th colspan="4">May</th>
</tr>
</thead>
<tbody>
<tr>
<td>15</td>
<td>17</td>
<td>16</td>
<td>18</td>
</tr>
</tbody>
</table>
Note that :contains
searches for all elements that contain the searched string. So, searching for 1
, will highlight 15
, 16
, 17
, 18
.
You can fix this by using filter()
method:
$("table:contains(" + month + ")")
.find("td").filter(function () {
return $(this).text() === day.toString()
})
.addClass('today');