我有一个MasterPage,在其内容部分我添加了一个FORM元素。 访问该页面时,我的所有控件都被重命名,因为FORM是runat = server。 因此,当在jquery中选择时,甚至表单也已重命名
我该如何解决?
感谢
答案 0 :(得分:2)
除了许多其他答案中建议的.ClientID
方法之外,您还可以使用jQuery的endswith选择器。
例如:选择id以“myid”结尾的元素(例如ctl001_form1_myid)
$('[id$="myid"]');
或者如果您使用.net 4,则可以设置ClientIdMode="false"
以防止重命名。
答案 1 :(得分:1)
你不能,那就是.Net的行为。您可以做的是调整您的jquery用法以合并您正在使用的控件的ClientID。最简单的方法是将某种翻译变量注入头部的脚本中。
<script language="javascript">
var myControl1 = '<%=myControl1.ClientID %>';
</script>
然后,您可以使用myControl1作为字符串变量,以更易读的方式将客户端ID注入到jquery调用中。
答案 2 :(得分:1)
使用母版页,所有元素都将ct100__etc附加到元素的ID。这是一个功能,因为它是一个命名容器。通常,解决它的方法是使用如下语法:
$("#<%= button.ClientID %>").click(..);
访问较长的ID,或依靠CSS类来识别元素。另一个技巧是使用DIV HTML元素包装表单的某些部分,并为其指定一个ID。
HTH。
答案 3 :(得分:1)
在这里查看这篇文章
http://john-sheehan.com/blog/custom-jquery-selector-for-aspnet-webforms/
非常清楚地解释这一切。诀窍是使用ClientId
答案 4 :(得分:0)
您可以使用Control.ClientID
。像
$("#<%= yourelement.ClientID %>")
答案 5 :(得分:0)
您还可以创建一个CSSCLASS,然后通过$('。classname')
进行访问<asp:TextBox id="tb4" Text="Hello World!" cssclass="txtboxtb4" runat="server" />
alert($('.txtboxtb4').val());
答案 6 :(得分:0)
另一种方法是将控件放在span标签中。
<span id="txt">
<asp:TextBox ID="txt" runat="server"></asp:TextBox>
</span>
你可以在jQuery中选择这样的元素。
$('#txt > input').val('Hello world');
但我的方法是,选择带有选择器结尾的元素。
$('input[id$="txt"]').val('Hello world');
适合我的案件。希望有所帮助。