【问题标题】:Find control created in Code-behind using jQuery使用 jQuery 查找在代码隐藏中创建的控件
【发布时间】:2013-02-17 12:57:46
【问题描述】:

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

});

【问题讨论】:

  • 检查您的源代码,查看您在客户端中的标签 ID 是什么,并查看您的 片段的结果。
  • 可能更容易使用遍历而不用担心使用服务器代码来填充选择器...显示一些源 html

标签: c# jquery asp.net


【解决方案1】:

我不确定它是否有效。
您可以利用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();
       });
    });

【讨论】:

  • 这个正确的语法是 L.ClientIDMode = ClientIDMode.Static;改成这个后,非常感谢!
  • @AzaRoth91 感谢您的更正。随时欢迎您。
【解决方案2】:

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

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

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

这等同于您正在尝试做的事情。

解决方法是使用FindControl:

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      只需分配一个额外的“标识 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();
        });
      });
      

      【讨论】:

        猜你喜欢
        • 2011-12-28
        • 2017-02-02
        • 2013-03-18
        • 2010-10-03
        • 1970-01-01
        • 2015-06-16
        • 1970-01-01
        • 2019-05-26
        • 1970-01-01
        相关资源
        最近更新 更多