我在想是否有一个更好的解决方案,可以为表格中的每个单元格添加onclick处理程序,而不是这种方法:Adding an onclick event to a table row
更好的方式是我不需要为每个单元格设置“cell.onclick = function”。
我只需要获取用户点击的单元格的协调。
谢谢!
编辑:“协调”表示左上角单元格为0x0,第一行表示第二单元格为0x1等。
答案 0 :(得分:7)
你在找这个吗?
$(function(){
$("#tableId tr td").click(function(event) {
alert(event.pageX);
alert(event.pageY);
});
});
如果您的表格单元格是动态生成的:
$(function(){
$("#tableId tr td").live('click', function(event) {
alert(event.pageX);
alert(event.pageY);
});
});
要获得top
和left
值,您可以尝试:
$(function(){
$("#tableId tr td").click(function(event) {
alert($(this).offset().top);
alert($(this).offset().left);
});
});
正如您的其他评论所示,您可能希望获取所点击单元格的ID,您可以尝试这样做:
$(function(){
$("#tableId tr td").click(function(event) {
alert($(this).attr('id'));
});
});
但是为了使上述工作正常,假设所有单元格都已具有id
属性。
答案 1 :(得分:0)
您正在寻找活动委派。
http://icant.co.uk/sandbox/eventdelegation/
其他例子。基本上观察一些较高的容器,例如用于单击事件的表,然后通过检查传递给事件处理程序的事件来确定是否需要处理它。
因此,如果点击发生在表格内,您可以确定事件的目标,并假设存在有效的td处理事件。
这样可以让您动态添加更多表格单元格,而无需为所有表格单元格添加处理程序。
jQuery特别是使用这种方法的优秀委托方法。 http://api.jquery.com/delegate/