2013-02-17 73 views
1

我希望能够访问在代码隐藏中创建的jQuery中的标签控件。使用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(); 
    }); 

}); 
+0

检查你的源代码,看看有什么是你的标签ID,在客户端,并查看您的<%=%>片段的结果。 – 2013-02-17 04:04:09

+0

可能更容易使用遍历,而不用担心使用服务器代码来填充选择器... show some source html – charlietfl 2013-02-17 04:05:23

回答

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(); 
     }); 
    }); 
+0

这种正确的语法是L.ClientIDMode = ClientIDMode.Static; 更改为此时,此作品非常感谢! – AzaRoth91 2013-02-17 04:28:05

+0

@ AzaRoth91感谢您的纠正。而且你总是受欢迎。 – 2013-02-17 06:25:51

0

你不能做你想要做的..这样的东西。

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

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

这相当于你正在尝试做什么。

解决方法是使用FindControl

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

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

0

假设后台代码实际上生成一个HTML <label>,您的jQuery的可能是这样的:

$(function() { 
    $(".hoverlabel").hover(function() { 
    $("label.heading").show(); 
    }); 
}); 
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(); 
    }); 
}); 
相关问题