我有这个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>


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

最佳答案

我对little more explanation is here的类似回答

asp.net中的runat="server"将母版和页面信息添加到其每个控件中。因此,如果您查看DOM,您的控件将类似于master_page_ctrl0_specialId [仅作为示例]。

您有几种选择。

选项1:使用客户端ID-推荐使用,但不要太多。我会尽量避免在javascript中编写ClientID。

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


选项2:使用相同的ID-不建议使用,因为它确实很难看。

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

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

选项3:使用课程-强烈建议。因为使用类的选择器是干净且简单的。另外,我看到您使用了class,而对.net控件使用了CssClass

$('.ClassOne.ClassTwo')


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

<asp:Panel runat="server" ClientIDMode="Static" id="specialId" CssClass="ClassOne ClassTwo">
</asp:Panel>

09-17 20:00