Tablesorter:排序后更改id

时间:2013-04-02 09:50:05

标签: javascript asp.net jquery-ui

在我的表中,我有一个[对象HTMLInputElement],我想改变这个元素的id。但这不起作用:

`function BindFunctions(){

        $('table[id*="tbl_main"]').tablesorter();
        $('table[id*="tbl_main"]').bind("sortEnd",function() { 
            var table = document.getElementById('<%=tbl_main.ClientID%>');
            for (var i = 0, row; row = table.rows[i]; i++) {
                var e = row.cells[0].firstChild;
                e.id= '5';           
            }
        }); 
    };`

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

如果没有看到相关标记,那么非常很难提供帮助。但我的猜测是,单元格的第一个子节点是文本节点而不是元素。 DOM firstChild属性为您提供了第一个节点,它可能是也可能不是元素。例如,如果您的表行如下所示:

<tr><td>Foo</td></tr>

...然后row.cells[0].firstChild是一个包含文字"Foo"的文字节点。

另请注意,引用的代码会创建无效的DOM结构:不能在文档中的多个元素上使用相同的id。您试图将id"5"提供给每行的第一个子元素。 id必须是唯一的。

此外,看起来你正在使用jQuery(虽然你没有标记问题jquery)。我只想提一下,虽然"5"是HTML的有效id值,但是CSS的有效id值,并且因为jQuery使用CSS样式选择器,使用jQuery的无效CSS id值是有问题的。