繁体   English   中英

母版页和jQuery的问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM