我有这个 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'),但没有成功。有人可以建议吗?
最佳答案
我的类似答案是 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以及包含<的任何id/strong> specialId
分别。
选项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>
关于jquery - 无法在 jquery 中访问 asp.net 控件 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19860085/