使用jQuery获取单元的“坐标”

我正在构建一个不同的网站,下面是我的HTML标记和我的问题。 请不要被这个文本墙推迟,我相信对于那些知道他们的东西的人来说,这确实不是一个难题,但需要一些解释。

                               
                               

这种标记在平铺类型的pastern中重复,以填充整个页面。 类似的DIV可能是:

 

如果你还没有看到它,我会在整个页面中创建一大堆单元格,分类为DIV。 现在,当用户点击一个单元格(其中一个

)时,我想得到它的坐标表示为: 0, 1, 5

在此示例中,0,1,5是ID为0的DIV,ID为1 DIV内的TR元素,最后是ID为5 TR元素内的单元格。 我想编写一个javascript函数来获取这些坐标,但我完全不知道要传递什么参数,而且我不知道如何得出坐标。

从我可以想到,一旦我可以将单击事件(?)传递给该函数,我可以查看

的父元素并获取它们的ID?

如果任何人都可以提供此问题的解决方案或提供任何输入,我们将不胜感激。

使用最接近的 jQuery函数,该函数返回您指定的父元素。

像这样:

 $("td").click(function () { var parentDIVId = $(this).closest("div").attr("id"); var parentTRId = $(this).closest("tr").attr("id"); var myId = $(this).attr("id"); } 

由于使用数字开始ID无效,我将提供不同的解决方案。

由于您的ID基本上是索引号,因此您可以使用jQuery的.index()方法来获取所需内容。

在这里测试: http //jsfiddle.net/hBarW/

 $('td').click(function(){ var $th = $(this); var td_idx = $th.index(); var tr_idx = $th.closest('tr').index(); var div_idx = $(this).closest('div').index(); alert(td_idx + ' ' + tr_idx + ' ' + div_idx); }); 

尝试

 $('td').click(function(){ var td = this.id; var tr = $(this).closest('tr').attr('id'); var div = $(this).closest('div').attr('id'); }); 

你可以在这里测试一下。

更多关于.closest()信息

这很容易

 $('td').click(function(){ $this = $(this); alert( $this.closest('div').attr('id') + ',' + $this.closest('tr').attr('id') + ',' + $this.attr('id')); }); 

但是你有一些问题..

  1. 你不能把数字作为ID
  2. ID应该在DOM内部是唯一的…