将数组匹配到表行索引,为每个索引执行操作

时间:2014-04-15 03:21:20

标签: jquery arrays cookies

我有一个类似下面例子的表。

<tr>
    <td>Content #1a</td>
    <td>Content #1b</td>
</tr>
<tr>
    <td>Content #2a</td>
    <td>Content #2b</td>
</tr>

一个Array值,其值与表行数相同。

var arr = [ 0, 0 ]

目前我将它们链接起来,所以当点击一行时,它会隐藏/显示该行,更新相应的数组值,然后将该数组保存为cookie。

var $tr = $('tbody tr').on('click', function () {
    var i = $tr.index(this);
        if(arr[i] == 0) {
        arr[i] = 1;
        // hide it
        }
        else {
        arr[i] = 0;
        // show it
        }
    $.cookie("CName", arr, { expires: 1, path: '/'});
}); 

问题是我不知道如何反向操作,所以将cookie转换为数组,然后根据数组值显示/隐藏相应的行。

var arr = $.cookie("CName").split(',');

这个想法是让它记住用户在页面加载时隐藏了哪些行。

由于

1 个答案:

答案 0 :(得分:1)

    $.each(arr,function(index,el){
        var tr = $('tbody:nth-child('+index+')');
        if(el == 1)
           $(tr).show();
        else
           $(tr).hide();
    });
  

这似乎隐藏了每一秒TR而不管其中设置的是什么   阵列。

问题是nth-child从1开始将该行更改为

 var tr = $('tbody tr:eq(' + index + ')');

这将解决它。