单击时获取表行ID并根据ID更新特定的数组值。

时间:2014-04-14 22:35:45

标签: jquery arrays

我有一个表格,每个TR给出一个带字母+数字值的ID,如下所示:

<tr id="a0">
    <td>Content #1</td>
    <td><div id="cs"></div></td>
</tr>
<tr id="a1">
    <td>Content #2</td>
    <td><div id="cs"></div></td>
</tr>

我还有一个数组的值与TR相同:

var Array = [ 0, 0 ];

当div&#34; cs&#34;单击,尝试检查表行ID并基于该更新阵列的特定值。因此,例如,如果单击TR a0中的div,则第一个数组值将设置为1,如果单击TR a1中的div,则第二个数组值将设置为1.

我知道我可以通过并做出巨大的if声明来做到这一点,但我想知道是否有更好的方法。

如果措辞严厉,请抱歉。

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用jQuery index方法获取缓存的jQuery集合中单击元素的索引。

var arr = [0, 0];

var $tr = $('tbody tr').on('click', function () {
    var i = $tr.index(this);
    arr[i] = 1;
});

正如David Thomas在评论中提到的那样,您也可以使用TR DOM Element对象的rowIndex属性而不是jQuery index方法。

arr[this.rowIndex] = 1;

答案 1 :(得分:0)

这是一种略有不同的方法 - FIDDLE

加载页面时,数组中的值与表中的每个tds相关联。

然后要读取数据,只需单击td,即可读取数据,无需任何标签。

JS

var myarray = new Array ('First', 'Second', 'Third');

for( i=0; i < myarray.length; i++ )
   {
    $("table tr:nth-child(" + (i+1) + ") td").data( "Stuff", myarray[i] );
    }

$( "td" ).click(function(){

    alert( $( this ).data( "Stuff") );

});