我有一个MasterPage,在其内容部分我添加了一个FORM元素。 访问该页面时,由于FORM是runat = server,所有我的控件都被重命名。 因此,当在jQuery中选择,甚至表格已被重命名为masterpage和jquery问题
我该如何解决这个问题?
感谢
我有一个MasterPage,在其内容部分我添加了一个FORM元素。 访问该页面时,由于FORM是runat = server,所有我的控件都被重命名。 因此,当在jQuery中选择,甚至表格已被重命名为masterpage和jquery问题
我该如何解决这个问题?
感谢
对于母版页,所有元素都将ct100__etc附加到元素的ID。这是自命名容器以来的一项功能。通常情况下,解决它的方法是使用语法,如:
$("#<%= button.ClientID %>").click(..);
要进入较长的ID,还是要靠CSS类来标识元素。另一个技巧是用DIV HTML元素封装表单的某些部分,并为其指定一个ID作为目标。
HTH。
您可以使用Control.ClientID
这一点。类似于
$("#<%= yourelement.ClientID %>")
你不能,这就是.Net的行为。你可以做的是调整你的jQuery使用情况,以合并你正在使用的控件的ClientID。最简单的方法是将某种翻译变量注入头部某处的脚本中。
<script language="javascript">
var myControl1 = '<%=myControl1.ClientID %>';
</script>
然后你可以使用myControl1作为一个字符串变量注入委托人身份证到您的jQuery通话更可读的方式。
您还可以创建一个的CssClass,然后由$访问( '类名')
<asp:TextBox id="tb4" Text="Hello World!" cssclass="txtboxtb4" runat="server" />
alert($('.txtboxtb4').val());
这个帖子看一看这里
http://john-sheehan.com/blog/custom-jquery-selector-for-aspnet-webforms/
解释这一切非常清楚。诀窍在于使用ClientId
除了许多其他答案中提出的.ClientID
方法,您可以使用jQuery的endswith选择器。
例如:选择一个ID的endsWith “身份识别码” 的元素(如ctl001_form1_myid)
$('[id$="myid"]');
,或者如果您使用的是.NET 4,你可以设置ClientIdMode="false"
防止重命名。
另一种方法是将控件放在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');
适用于我的情况。希望帮助。
我不希望它重新命名我的对象 – Himberjack 2010-12-08 12:43:45
你不能做到这一点。它是一种默认行为。 – rahul 2010-12-08 12:45:11