使用jQuery匹配表单元格类和索引

时间:2011-10-26 12:04:00

标签: javascript jquery

以下代码只是我想要应用于我的应用程序的理论的演示,因此使用THIS而不是td.flex不适合函数中的第二行。

另外,由于其他原因,我必须使用.index而不是nth-child。

所有人都说:)

以下函数循环遍历具有flex类的表的第一行中的所有TD。对于每个记录索引值。下一行不是实际应用程序的一部分,但是为了测试该理论,应该找到具有一类flex的所有tds,其具有与cellIndex值匹配的索引值。任何想法如何让这个工作?

请记住,此代码是为了测试理论,因此为什么我不使用nth-child或者这样来应用css着色!

cellIndex = new Array();

    $('table tr:first-child td.flex').each(function (i) {

        cellIndex[i] = $(this).index();

        $($('td.flex').index(cellIndex)).css('background-color', '#ff0000');

    });

如果我这样做:console.log($('td.flex').index(cellIndex));

我为每个循环获得-1

只是为了确认我知道我可以这样做:

$(this).css('background-color', '#ff0000');

但是不是我正在尝试使用此功能实现的功能,并且无法在实际应用中使用。

HTML示例:

<table>
<tr>
<td class="flex">Flex</td>
<td>Not Flex</td>
<td class="flex">Flex</td>
<td>Not Flex</td>
<td>Not Flex</td>
</tr>
</table>

2 个答案:

答案 0 :(得分:4)

每个功能都已包含一个索引系统。所以你可以像这样使用它(cellIndex已经过时了):http://jsfiddle.net/TMFg3/

cellIndex = new Array();

$('table tr:first-child td.flex').each(function (i) {

    cellIndex[i] = i;

   $('td.flex:eq('+i+')').css('background-color', '#ff0000');

});

如果你不想使用cellIndex,那么你必须将它循环到每个函数之外,因为你不能将数组发布到索引标识符,而且它会改变每个循环中的相同目标:)< / p>

您还可以使用cellIndex中的索引,如下所示:

cellIndex = new Array();

$('table tr:first-child td.flex').each(function (i) {

    cellIndex[i] = i;

   $('td.flex:eq('+cellIndex[i]+')').css('background-color', '#ff0000');

});

答案 1 :(得分:0)

如果你只想走列表,你可以这样做:

$('table tr td:first-child td.flex').each(function (i) {        
    var cellIndex =$('table tr:first-child td').index(this);
    $('#hello').text($('#hello').text()+'"'+cellIndex+'",');
    $('td').eq(cellIndex).css('background-color', '#ff0000');    
}); 

这里的假设是#hello标识的元素存在 - 然后它将包含“0”,“2”,显示索引,元素将是红色背景。

把它放在一个数组中:

$(document).ready(function(){
  var myCellIndexes=[];
  $('table tr td').parent().find('.flex').css('background-color','green');
  $('table tr:first-child td.flex').each(function (i) {        
    var cellIndex =$('table tr:first-child td').index(this);
    myCellIndexes[i]=cellIndex;
    $('#hello').text($('#hello').text()+'"'+cellIndex+'",');
    $('td').eq(cellIndex).css('background-color', '#ff0000');  
   }); 
   $('#hello').text($('#hello').text()+myCellIndexes);
});

结果将是:“0”,“2”,0,2在最后的hello中证明数组现在保存元素的索引。这应该可以让您了解您希望完成实际工作的内容:)