我有一个简单的表来模拟甘特图。这个想法是每个TD点击触发存储在隐藏输入文本(值数组)中的值的总和,在TH(TR标签的第一个子)中可用。这些值的行总和显示在最终的TD上。
接下来,代码表:
<table width="100%" cellspacing="0" class="datagrid_ppal">
<tbody>
<tr class="encabezado">
<th rowspan="2" scope="col" width="15%">Area</th>
<th colspan="7" scope="col">Month</th>
</tr>
<tr class="encabezado">
<th scope="col" width="2%">1</th>
<th scope="col" width="2%">2</th>
<th scope="col" width="2%">3</th>
<th scope="col" width="2%">4</th>
<th scope="col" width="2%">5</th>
<th scope="col" width="2%">...</th>
<th scope="col" width="2%">31</th>
</tr>
<tr>
<th scope="row">Area 1<input name="line_config" type="hidden" value="0,5,50" /></th>
<td class="gantt"> </td>
<td class="gantt"> </td>
<td class="gantt"> </td>
<td class="gantt"> </td>
<td class="gantt"> </td>
<td class="gantt">...</td>
<td class="gantt"> </td>
</tr>
<tr>
<th scope="row">Area 2 <input name="line_config" type="hidden" value="0,0,10" /></th>
<td class="gantt"> </td>
<td class="gantt"> </td>
<td class="gantt"> </td>
<td class="gantt"> </td>
<td class="gantt"> </td>
<td class="gantt">...</td>
<td class="gantt"> </td>
</tr>
<tr class="encabezado">
<th scope="row">Total</th>
<td class="total_dia"> </td>
<td class="total_dia"> </td>
<td class="total_dia"> </td>
<td class="total_dia"> </td>
<td class="total_dia"> </td>
<td class="total_dia">...</td>
<td class="total_dia"> </td>
</tr>
</tbody>
</table>
值数组的工作原理如下: array [0]:关闭; 阵列[1]:术前; array [2]:Operating。
这是我用来区分预操作和可操作的单元的jQuery代码。如果单元格处于非活动状态,则该区域处于关闭状态:
$(document).ready(function() {
$('td.gantt').click(function() {
$(this).toggleClass('preop');
});
$('td.gantt').dblclick(function() {
$(this).toggleClass('operating');
});
});
无效TD始终与总数相加。我想做的事?简单: 1.如果未点击TD(不活动),则jQuery总是将TH输入值[0]加总。 2.当我点击或双击时,TD.gantt jQuery获取TH输入值[1],并将其添加到总数中。
如果有人可以帮助解决整个问题,那么我会非常感激。
答案 0 :(得分:1)
混合“click”和“dblclick”不起作用,至少不可靠。我建议您重新进行交互,以便“点击”循环您的三种不同状态。
要做你想做的数学运算(我并不完全理解),基本问题是获得与每个点击<th>
所在的列对应的<td>
内容要做到这一点,你必须找到<td>
与其父<tr>
的哪个孩子,然后这将允许你找到<th>
(带有“:nth-子“选择器,或”eq“过滤器)。