如何使用Javascript查找动态生成的控件?

时间:2013-02-25 06:34:16

标签: c# javascript tablesorter

我已经在代码中创建了一个HTML表格,并将其添加到ASPX页面中的面板控件。

现在我想在javascript中使用它的id来获取表来实现表分类器。

   $(document).ready(function () {
        $("myTable").tablesorter();
    });  

它没有识别我在Codebehind中创建的mytable控件:

       HtmlTable Table= new HtmlTable();        
       Table.ID = "NavTable";

请尝试多种方式帮助我,但没有任何工作。

提前致谢

3 个答案:

答案 0 :(得分:2)

你有几个选择。基本思想是在您可以找到的地方输出感兴趣的控件的ClientID。

例如:

$(document).ready(function () {
    $("#<%=this.TableControl.ClientID%>").tablesorter();
}); 

或者:如果您使用的是ASP.NET 4.5环境,则可以设置ClientIDMode =“Static”,并直接在脚本中对其进行硬编码。但是要注意,如果你引入了ID冲突,那么ASP.NET会打你的手腕。

<asp:Grid ClientIDMode="Static" ID="my_static_table_id" />
$(document).ready(function () {
    $("#my_static_table_id").tablesorter();
}); 

答案 1 :(得分:1)

您的示例包含不同的ID myTableNavTable。如果你想通过id选择,你使用了错误的选择器。您的选择器必须如下所示:

$("#NavTable").tablesorter();

所以你忘记了选择器值的锐利。

答案 2 :(得分:1)

这里有几个问题。

  1. 您尝试从javascript引用“myTable”,并将其命名为“NavTable”。

  2. 在jQuery中通过id引用html元素需要一个#来告诉jQuery选择器是一个ID而不是一个html标记名。

  3. 为了确保ASP.NET不在HTML输出中使用其他ID,您应该从您在C#中创建的ASP.NET服务器端对象中获取ClientID值(可能会发生) if是在ASP.NET用户控件中声明的。)

  4. 代码将如下所示:

    $(document).ready(function () {
        $("#<%=Table.ClientID%>").tablesorter();
    });
    

    为此,您还需要将Table变量声明为类中的成员,以便设计代码在范围内看到它。否则,只能在您创建它的方法中访问它。

    如果您知道这将始终生成您指定的实际ID,您可以在javascript中对其进行硬编码,如下所示:

    $(document).ready(function () {
        $("#NavTable").tablesorter();
    });