[英]problem with masterpage and jquery
我有一个MasterPage,在其内容部分中添加了FORM元素。 访问该页面时,由于FORM是runat = server,因此我的所有控件都被重命名。 因此,在jquery中进行选择时,即使表单已被重命名
我该如何解决?
谢谢
除了许多其他答案中建议的.ClientID
方法之外,您还可以使用jQuery的endswith选择器。
例如:选择其ID以“ myid”结尾的元素(例如ctl001_form1_myid)
$('[id$="myid"]');
或者,如果您使用的是.net 4,则可以设置ClientIdMode="false"
以防止重命名。
您不能,这就是.Net的行为。 您可以做的是调整jquery的使用,以合并所使用控件的ClientID。 最简单的方法是将某种翻译变量注入脚本的头部某个位置。
<script language="javascript">
var myControl1 = '<%=myControl1.ClientID %>';
</script>
然后,您可以将myControl1用作字符串变量,以更易读的方式将客户端ID注入到jquery调用中。
对于母版页,所有元素将在元素ID后面附加ct100__etc。 这是自命名容器以来的一项功能。 通常,解决该问题的方法是使用如下语法:
$("#<%= button.ClientID %>").click(..);
要访问更长的ID,或依靠CSS类来标识元素。 另一个技巧是用DIV HTML元素包装表单的某些部分,并为其指定ID。
HTH。
在这里看看这个帖子
http://john-sheehan.com/blog/custom-jquery-selector-for-aspnet-webforms/
相当清楚地解释了这一切。 诀窍是使用ClientId
您可以为此使用Control.ClientID
。 就像是
$("#<%= yourelement.ClientID %>")
您也可以创建CSSCLASS,然后通过$('。classname')访问
<asp:TextBox id="tb4" Text="Hello World!" cssclass="txtboxtb4" runat="server" />
alert($('.txtboxtb4').val());
另一种方法是将控件放在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');
适用于我的情况。 希望对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.