我正在编写一个管理非常大的表的脚本。当用户单击表格单元格时,我想知道他们单击了哪个单元格。
例如
--------------
| | |
| | Click|
--------------
应该给我一个 (1, 1) 的单元格引用。
无论如何我都可以用 javascript 来做到这一点。它运行的页面将 jquery 用于其他目的,因此任何基于 jquery 的解决方案都很好。
编辑:为了澄清,左上角的单元格是 (0, 0)。出于性能原因,该事件需要绑定到table,不是 tds。
使用以下命令可以非常轻松地完成此操作target
的财产event
object:
$('#mytable').click(function(e) {
var tr = $(e.target).parent('tr');
var x = $('tr', this).index(tr);
var y = tr.children('td').index($(e.target));
alert(x + ',' + y);
});
这种方法允许您仅将 1 个事件处理程序绑定到整个表格,然后找出单击了哪个表格单元格。这称为事件委托,在正确的情况下可以更加高效,而这个就符合要求。使用这个可以避免将事件绑定到每个<td>
,并且它不需要硬编码坐标。所以,如果你的表看起来像这样:
<table id='mytable'>
<tr>
<td>hi</td>
<td>heya</td>
</tr>
<tr>
<td>boo</td>
<td>weee</td>
</tr>
</table>
单击时它将提醒坐标。你可以用它做任何事。 :)
如果您发现性能太慢(取决于您的表有多大),那么您将不得不诉诸硬编码或两者的组合,也许只对<tr>
索引,因为这将是最慢的获取,然后获取<td>
动态索引。最后,如果所有这些坐标业务完全没有必要,并且您真正想要的是对单击的引用<td>
,你只需这样做:
$('#mytable').click(function(e) {
var td = $(e.target);
// go crazy
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)