我有一个在 ASP.NET C# 代码后面创建的表。该表有几个级别的分组,当我为最外面的分组创建行时,我添加了一个自定义属性,如下所示:
foreach (Table2Row row in Table2Data)
{
// skipping a bunch of irrelevent stuff
...
tr_group.Attributes.Add("RowsToToggle", String.Format(".InnerRowGroupId_{0}", row.GroupHeaderId));
...
}
该属性是我想要切换的内层行的 CSS 类名。当用户单击外层行时,我想为所有与自定义属性匹配的内层行调用 JQuery Toggle 函数。
为了达到这个效果,我在 aspx 文件中使用以下脚本将 onclick 事件附加到标题行:
var tableId = '<%= Table2MainTable.ClientID %>';
$(document).ready(function () {
var table = document.getElementById(tableId);
var groupRows = table.getElementsByClassName("Table2GroupHeaderRow");
for (i = 0; i < groupRows.length; i++) {
table.groupRows[i].onclick = function () { ToggleOnRowClick(table.rows[i]); }
}
});
function ToggleOnRowClick(row) {
var r = $('#' + row.id);
var innerRows = r.attr('RowsToToggle');
$(innerRows ).toggle();
}
因此,单击标题行上的任意位置应调用函数 ToggleOnRowClick,然后该函数应通过自定义属性 RowsToToggle 切换其下方的行集。
当我在 ToggleOnRow 函数中设置 (FireBug) 断点时,变量 r 似乎指向正确的对象。但是,innerRows 没有设置,而是保持为空。那么我是在 ASP.NET 中错误地设置自定义属性还是在 JQuery 中错误地读取?