【问题标题】:Tablesorter: change id after sortTablesorter:排序后更改ID
【发布时间】:2013-04-02 09:50:04
【问题描述】:

在我的表中,我有一个 [object 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';           
            }
        }); 
    };`

谁能帮帮我?

【问题讨论】:

  • “谁能帮帮我?” 没有看到相关的标记?可能不会。

标签: javascript asp.net jquery-ui


【解决方案1】:

没有看到相关的标记,非常很难提供帮助。但我的猜测是单元格的第一个孩子是文本节点而不是元素。 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 值。

【讨论】:

  • 当我 alert(e) 我得到一个 HTMLInputElement 所以我认为它需要正确的元素。当我调试时,我实际上看到 id 设置为 5,但它没有提交。
  • @user2235511:如果它实际上是一个输入元素,那么您的代码e.id = "5"; 将起作用。所以这不是你遇到的问题。它要么与您尝试创建的无效结构有关,要么与您观察到的任何让您认为它不起作用的东西根本不归结为id
  • 好的,你的解释有帮助。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-13
  • 2012-12-23
  • 2011-03-19
  • 2023-03-20
  • 2022-01-24
  • 1970-01-01
  • 2017-09-28
相关资源
最近更新 更多