<table id="calendar" border="0" cellspacing="0" cellpadding="1">
<thead>
<tr>
<td class="swith"><b>‹</b></td>
<td class="month" colspan="5" data-month="9" data-year="2018">Сентябрь 2018</td>
<td class="swith"><b>›</b></td>
</tr>
<tr>
<td>Пн</td>
<td>Вт</td>
<td>Ср</td>
<td>Чт</td>
<td>Пт</td>
<td>Сб</td>
<td>Вск</td>
</tr>
</thead>
<tbody>
<tr>
<td></td><td></td><td></td><td></td><td></td><td>1</td><td>2</td>
</tr>
<tr>
<td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td></tr>
<tr>
<td>10</td><td>11</td><td>12</td><td>13</td><td>14</td><td>15</td><td>16</td>
</tr>
<tr>
<td>17</td><td>18</td><td>19</td><td>20</td><td>21</td><td>22</td><td class="today">23</td>
</tr>
<tr>
<td>24</td><td>25</td><td>26</td><td>27</td><td>28</td><td>29</td><td>30</td>
</tr>
</tbody>
</table>
const containerSelector = 'table';
const itemSelector = 'td';
const events = [ 'click', 'contextmenu' ];
const onText = text => console.log(text);
$(containerSelector).on(events.join(' '), itemSelector, function() {
onText($(this).text());
return false;
});
const container = document.querySelector(containerSelector);
const handler = e => (e.preventDefault(), onText(e.target.closest(itemSelector).textContent));
events.forEach(n => container.addEventListener(n, handler));