母版页和jquery的问题

时间:2010-12-08 12:40:11

标签: c# javascript asp.net jquery master-pages

我有一个MasterPage,在其内容部分我添加了一个FORM元素。 访问该页面时,我的所有控件都被重命名,因为FORM是runat = server。 因此,当在jquery中选择时,甚至表单也已重命名

我该如何解决?

感谢

7 个答案:

答案 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');

适合我的案件。希望有所帮助。