2

我有这个html结构:

<asp:Panel ID="divOne">
  <div class="divSection1">
  <asp:Panel runat="server" id="specialId" class="ClassOne ClassTwo"
    <asp:Label  id="MyLabel"></asp:Label>
    <div id="myDiv" </div>
  </asp:Panel>
  </div>
</asp:Panel> 

我正在尝试访问 jquery 中的“specialId”,例如 $('#specialId'), $('div.specialId'),但没有成功。有人可以建议吗?

4

2 回答 2

6

我的类似答案和更多解释在这里

runat="server"在 asp.net 中,将母版和页面信息添加到其每个控件中。因此,如果您查看 DOM,您的控件将看起来像这样master_page_ctrl0_specialId[只是一个示例]。

你有几个选择。

选项 1:使用客户端 ID - 推荐使用,但嗯.. 没那么多。我会尽量避免在 javascript 中编写 ClientID。

$('#<%= specialId.ClientID %>')

选项 2:使用相同的 ID - 不推荐,因为它真的很难看。

$('[id$=specialId]')或者$('[id*=specialId]')

上述选择器是任何以结尾的id 和分别 包含specialID的任何 id 。 specialId

选项 3:使用类 - 强烈推荐。因为使用类的选择器是干净且简单的。另外,我看到您使用class,CssClass代替 .net 控件。

$('.ClassOne.ClassTwo')

选项 4ClientIDMode="Static"在控件上使用 .NET Framework 4.0 中引入的 ,使其 ID 保持不变。- 也推荐。

<asp:Panel runat="server" ClientIDMode="Static" id="specialId" CssClass="ClassOne ClassTwo">
</asp:Panel>
于 2013-11-08T14:03:23.467 回答
1

您应该使用以下语法使用实际生成的 HTML id

这意味着您需要使用可以通过以下语法访问的客户端 ID

$('#<%= specialId.ClientID %>')
于 2013-11-08T13:24:27.573 回答