如何在jquery中获取Dynamic Span id?

时间:2013-04-01 12:32:16

标签: c# asp.net jquery html

我在asp.net中使用jquery

我有一个用户控件,其中我有div和div表,在表tr和tr td以及td中我有标签。

ASCX:

          <div  ID="Container" runat="server" class="dvContainer">
<table ID="Table" class = "Tablecs">
    <thead><tr>
        <td colspan="2">
            <asp:Label ID="lbl1" Text="Swiss" runat="server" /></td>
    </tr>
        </thead>
    <tr>
        <td>ABC</td>
        <td>DEF</td>
    </tr>
    <tr>
        <td><asp:Label ID="lblPA" Text="SUN 12/21 05:04" runat="server" /></td>
        <td ><asp:Label ID="lblPD" Text="SUN 12/21 19:00" runat="server" /></td>
    </tr>
        <tr>
        <td><asp:Label ID="lblAA" Text="SUN 12/21 05:04" runat="server" /></td>
        <td ><asp:Label ID="lblAD" Text="SUN 12/21 19:00" runat="server" /></td>
    </tr>
</table>     

我想将数据动态绑定到这些用户控件。即,将数据绑定到用户控件中的标签。

我的Jquery

            $div.find(".Table").text(oPorts[iCount].Name); // my result is an array of oPorts and i have filed as Name

但这不行。 当我动态检查代码时,它为每个标签生成SPAN 如何在循环中找到SPAN id dynamiccaly并将数据绑定到lables ??

感谢任何帮助。在此先感谢。

1 个答案:

答案 0 :(得分:1)

假设您的用户控件带有如下所示的标记

<%@ Control Language="C#" AutoEventWireup="true" 
 CodeBehind="WebUserControl1.ascx.cs" Inherits="DOTNET_FORMS.WebUserControl1" %>

<div id="Container" runat="server" class="dvContainer">
    <table id="Table" class="Tablecs">
        <tr>
            <td>
                <asp:Label ID="lblPA" Text="SUN 12/21 05:04" runat="server" />
            </td>
            <td>
                <asp:Label ID="lblPD" Text="SUN 12/21 19:00" runat="server" />
            </td>
        </tr>
    </table>
</div>

您已在.aspx页面上注册了此用户控件,如下所示:

<%@ Register TagPrefix="UC" TagName="Test" Src="~/WebUserControl1.ascx" %>

并像这样使用它:

<UC:Test ID="uc1" runat="server" />

然后,当您运行页面时,您的元素会呈现类似

的元素
<div id="uc1_Container" class="dvContainer">
    <table id="Table" class="Tablecs">
        <tr>
            <td>
                <span id="uc1_lblPA">SUN 12/21 05:04</span>
            </td>
            <td>
                <span id="uc1_lblPD">SUN 12/21 19:00</span>
            </td>
        </tr>
        <tr>
            <td>
                <span id="uc1_lblAA">SUN 12/21 05:04</span>
            </td>
            <td>
                <span id="uc1_lblAD">SUN 12/21 19:00</span>
            </td>
        </tr>
    </table>
</div>

查看标签和其他元素(具有runat="server"属性的元素)的ID如何更改,即

lblPA > uc1_lblPA
lblPD > uc1_lblPD

Container > uc1_Container

所以,你必须注意这些变化,因为只有这样你才能使用jQuery获取这些元素,因为jQuery是一种客户端语言,它在服务器端代码(runat =“server”)执行后执行

但是,如果您不想留意修改后的ID,可以执行以下操作

  1. 删除runat="server"属性,并确保您的ID是唯一的,所有这些
  2. runat="server"属性成为他们的属性,在所有服务器端控件上放置一个属性clientidmode="static"。并且Ids不会改变。
  3. 使用ClientId,即在您的jQuery选择器中,抓取一个这样的元素:$('#"+'<%= lblPA.ClientID %>');
  4. 现在,由于你的ID是唯一的,你不需要找到,直接抓住这样的元素:

    $('#lblPA').text();
    

    或者如果您想要使用类Tablecs遍历表的所有tds,请执行以下操作:

    $('.Tablecs tr td').each(function(index, item){
                 alert($(item).text());
    });