如何获得与TABLE相关的TD索引,而不是TR

时间:2016-05-18 08:43:42

标签: jquery html html-table

我在页面上有四个表,我想分别将表格单元格的索引作为目标,其中TABLE作为父级,而不是ROW。此代码返回每行中的索引。

所以我想找到每个表中带有一类“事件”的前三个TD。

$('.section .calendar').each(function(){  
 $(this).find('td.events').each(function(){
      ind= $(this).index()
      ind <= 2 ? $(this).css('background','#f90') : $(this).css('background','#000');

     })
  })

如果我尝试:

ind= $('.calendar td.events').index(this) 

它将所有四个表中的单元格索引作为父

ind= $(this).index()  

将每行(所有四个表中)的单元格索引作为其父

表的结构通常是有效的:

<table class="calendar">
 <tr>
  <th></th>
  <th></th>
  <th></th>
  <th></th>
  <th></th>
  <th></th>
  <th></th>
</tr>
<tbody>
<tr>
 <td></td>
 <td class="events"></td>
 <td></td>
 <td class="events"></td>
 <td></td>
 <td></td>
 <td></td>
</tr>
<tr>
 <td></td>
 <td class="events"></td>
 <td></td>
 <td></td>
 <td></td>
 <td class="events"></td>
 <td></td>
</tr>

(...等)         

  • 三个相同的表

3 个答案:

答案 0 :(得分:2)

您可以将所有tds的集合作为参数传递给索引方法:

$('.section .table').each(function(){  
 var childtds = $(this).find('td.events');
 childtds .each(function(){
  ind= $(this).index(childtds );
  ind <= 2 ? $(this).css('background','#f90') : $(this).css('background','#000');

  })
})

答案 1 :(得分:0)

你可以尝试这样的事情。 它基本上计算当前TD之前的TD数量。

function getTDIndex($td) {
    var index1 = $td.prevAll("td").length;
    var index2 = $td.closest("tr").prevAll("tr").find("td").length;

    var index = index1 + index2;
};

答案 2 :(得分:0)

RaraituL的上述解决方案似乎有效:

$('.section').each(function(){
 $(this).find('td.events').each(function(){
  var index1 = $(this).prevAll("td").length;
  var index2 = $(this).closest("tr").prevAll("tr").find("td").length;
  var index = index1 + index2;
  index <= 6 ? $(this).css('background','#f90') : $(this).css('background','#000');
 })
})