Индекс столбцов таблицы с предыдущими столбцами rowspan
У меня есть следующий jsfiddle, готовый показать вам свою проблему.
`https://jsfiddle.net/rwurzer/no4sefyu/`
Live Demo
В основном проблема у меня есть столбец таблицы, где у меня есть rowspan, назначенный.
Я хочу получить нужный индекс столбца.
Надеюсь, моя скрипка достаточно хороша, чтобы объяснить мою проблему: -)
Надеюсь, что кто-нибудь может помочь?
Ответы
Ответ 1
Хорошо, я знаю, что у вас уже есть ответ, попробовав этот вариант. Он основан на вычислении индексов и должен работать для любой ячейки. И я удалил дубликаты атрибутов id
в jsFiddle.
$('td').click(function(){
var clickedEl = $(this);
var myCol = clickedEl.closest("td").index();
var myRow = clickedEl.closest("tr").index();
var rowspans = $("td[rowspan]");
rowspans.each(function () {
var rs = $(this);
var rsIndex = rs.closest("tr").index();
var rsQuantity = parseInt(rs.attr("rowspan"));
if (myRow > rsIndex && myRow <= rsIndex + rsQuantity - 1) {
myCol++;
}
});
alert('Row: ' + myRow + ', Column: ' + myCol);
});
Вот демо в jsFiddle. Просто хочу решить вашу проблему с помощью этого подхода =).
Ответ 2
внести изменения → var myCol = $(this).closest("td").index();
заменить на var myCol = $(this).closest("td").html();
, и вы не можете иметь одинаковый идентификатор для всех элементов, поэтому nochKeinTermin
измените его с id на класс
Наконец-то...
<table name="kalender" class="kalender" id="mytable" width="100%" border="0" cellspacing="10">
<tr>
<td class="hiddenCell"> </td>
<td class="hiddenCell" colspan="8">8</td>
</tr>
<tr>
<td>Uhrzeit</td>
<td colspan="8" id="1440367200" class="rightBorder day">Montag, 24.08.2015</td>
</tr>
<tr>
<td class="uhrzeit"> </td>
<td width="120px" id="mitarbeiter_1">AnBi</td>
<td width="120px" id="mitarbeiter_2">HeBi</td>
<td width="120px" id="mitarbeiter_3">JuHa</td>
<td width="120px" id="mitarbeiter_4">StRi</td>
<td width="120px" id="mitarbeiter_5">FrWi</td>
<td width="120px" id="mitarbeiter_7">EvSc</td>
<td width="120px" id="mitarbeiter_8">JoAr</td>
<td width="200px" class="rightBorder" id="mitarbeiter_10">GaHa</td>
</tr>
<tr>
<td id="21600" class="uhrzeit">7:00</td>
<td rowspan="2" class="terminActiveDoppel" id="11" title="Patient">1</td>
<td class="termin droppable nochKeinTermin" style="background:red;">2</td>
<td class="termin droppable nochKeinTermin">3</td>
<td class="termin droppable nochKeinTermin">4</td>
<td class="termin droppable nochKeinTermin">5</td>
<td class="termin droppable nochKeinTermin">6</td>
<td class="termin droppable nochKeinTermin">7</td>
<td class="terminRightBorder droppable nochKeinTermin">8</td>
</tr>
<tr>
<td id="21600" class="uhrzeit">7:00</td>
<td class="termin droppable nochKeinTermin" style="background:blue;">2</td>
<td class="termin droppable nochKeinTermin">3</td>
<td class="termin droppable nochKeinTermin">4</td>
<td class="termin droppable nochKeinTermin">5</td>
<td class="termin droppable nochKeinTermin">6</td>
<td class="termin droppable nochKeinTermin">7</td>
<td class="terminRightBorder droppable nochKeinTermin">8</td>
</tr>
</table>
<br />
<br />
When I click the red cell it shows column "2" which is correct.
<br />
When I click the blue cell it should also show column "2" but it shows column "1".
и в jquery
$('td.nochKeinTermin').click(function(){
var myCol = $(this).closest("td").html();
var myRow = $(this).closest("tr").index();
alert('Row: ' + myRow + ', Column: ' + myCol);
});