1

我希望能够访问在代码隐藏中创建的 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();
  });

});
4

4 回答 4

3

我不确定它是否有效。
您可以利用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();
       });
    });
于 2013-02-17T04:12:47.737 回答
0

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

您正在尝试将字符串用作代码中的对象。以这个普通的 C# 为例:

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

这相当于你正在尝试做的事情。

解决方法是使用FindControl

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

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

于 2013-02-17T04:12:16.827 回答
0

假设代码隐藏实际上呈现一个 html <label>,你的 jQuery 可能是这样的:

$(function () {
  $(".hoverlabel").hover(function () {
    $("label.heading").show();
  });
});
于 2013-02-17T04:15:00.383 回答
0

只需分配一个额外的“标识 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();
  });
});
于 2013-02-17T04:57:46.893 回答