我有一個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