使用jQuery查找在代码隐藏中创建的控件

本文关键字:创建 控件 隐藏 代码 jQuery 查找 使用 | 更新日期: 2023-09-27 17:59:58

我希望能够访问在codeehind中创建的jQuery中的标签控件。

我已经在我的页面上添加了控件,就像一样

        Label L = new Label();
        L.ID = "txt" + i;
        L.Text = dr["category_name"].ToString();
        L.CssClass = "heading";
        divCat.Controls.Add(L); 

是否可以通过ID或jQuery中的其他选项找到这些控件?以下给出了一个错误,表示没有这样的控制:

$(function () {
  $(".hoverlabel").hover(function () {
    $("#<%=txt1.ClientID %>").show();
  });
});

使用jQuery查找在代码隐藏中创建的控件

我不确定它能不能工作
您可以享受ClientIDMode="Static"例如

<asp:TextBox ID="txtEcho2" runat="server" ClientIDMode="Static" /> 

在您的情况下

    Label L = new Label();
    L.ID = "txt" + i;
    L.Text = dr["category_name"].ToString();
    L.CssClass = "heading";
    divCat.Controls.Add(L); 
    L.ClientIDMode= ClientIDMode.Static;

和你的jquery函数

    $(function () {
        $(".hoverlabel").hover(function () {
        $("#txt1").show();
       });
    });

那样你就不能做你想做的事。

您正试图在代码中使用字符串作为对象。以这个正常的C#为例:

string myString = "HelloString";
string lowerString = HelloString.ToLower(); // This won't work..

这相当于你试图做的事情。

解决方法是使用FindControl:

$(function () {
    $(".hoverlabel").hover(function () {
        $("#<%= FindControl("txt1").ClientID %>").show();
    });
});

这将根据您动态分配的ID找到一个控件。

假设后面的代码实际上呈现了一个html <label>,那么您的jQuery可能类似于:

$(function () {
  $(".hoverlabel").hover(function () {
    $("label.heading").show();
  });
});

只需分配一个额外的"识别CSS类":

var L = new Label();
L.ID = "txt" + i;
L.Text = dr["category_name"].ToString();
L.CssClass = "heading myLabel"; // Set multiple classes separated by spaces
divCat.Controls.Add(L); 

然后,您可以使用以下jQuery语句进行控制:

$(function () {
  $(".hoverlabel").hover(function () {
    $(".myLabel").show();
  });
});