javascript - 在 ASP.NET 中添加自定义属性。在 JQuery 中访问它

标签 javascript jquery asp.net

我有一个在 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 中错误地读取了自定义属性?

最佳答案

您没有发布生成内部级别行的代码,我假设您为它们安排了适当的类(class)。

您发布的 jquery 几乎没有问题。 这一行行不通:

   table.groupRows[i].onclick = function () { ToggleOnRowClick(table.rows[i]); }
  1. 您没有为表对象定义任何 groupRows 属性。
  2. 我们不再关心表格行,我们关心 groupRows[i] 并希望将其传递给 ToggleOnRowClick 函数。
  3. 下一个函数中的这一行也是错误的:var r = $('#' + row.id);

解决方案:将您的脚本更改为:

var tableId = '<%= Table2MainTable.ClientID %>';
$(document).ready(function () {
    var table = document.getElementById(tableId);
    var groupRows = table.getElementsByClassName("Table2GroupHeaderRow");
    for (i = 0; i < groupRows.length; i++) {
        groupRows[i].onclick = function () { ToggleOnRowClick(this); }
    }
});

function ToggleOnRowClick(row) {
    //var r = $('#' + row.id);
    var innerRows = $(row).attr('RowsToToggle');
    $("." + innerRows).toggle();
}

我已经用虚拟数据测试了代码。所以,如果您有任何问题,请私信我。

关于javascript - 在 ASP.NET 中添加自定义属性。在 JQuery 中访问它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18851146/

相关文章:

javascript - 在内容更改时对内联 block 元素进行动画换行

c# - 如何在 Blazor 的 onkeypress 方法中读取输入的当前值?

asp.net - OWIN 自托管 CookieAuthentication 和旧版 .NET 4.0 应用程序/FormsAuthenticationTicket

javascript - 使用 jQuery 加载基于 <label> 内容的图标

javascript - 在过滤器内部使用时,Split 没有做任何事情

javascript - 使用 jQuery 查找事件表单元素

javascript - 单击页面上的其他任何位置时,使下拉菜单返回

javascript - 尝试调用未知 WebAssembly 的函数

javascript - 为什么这个简单的 JavaScript XOR 加密算法不起作用?

jquery - 如何在标准 Web 表单 .Net 中返回 JSON 对象