我在网站上重构一些CSS.我一直在努力,并注意到代码中缺少传统的HTML ID.
有大量使用CssClass='…'
,或者有时只是class='…'
,但我似乎找不到说id ='...'的方法,也没有让它被服务器换掉.
这是一个例子:
<span id='position_title' runat='server'>Manager</span>
Run Code Online (Sandbox Code Playgroud)
当响应从服务器返回时,我得到:
<span id='$aspnet$crap$here$position_title'>Manager</span>
Run Code Online (Sandbox Code Playgroud)
这里有什么帮助?
使用jQuery选择元素:
$("span[id$='position_title']")....
Run Code Online (Sandbox Code Playgroud)
jQuery的灵活选择器,特别是它的'开头'/'以选择器结束'('end with'选择器如上所示,为ASP.NET的dom id munge提供了一个很好的方法.
RP
放在id前面的'crap'与控件的容器有关,除了不把它放在任何容器中之外,我无法(据我所知)阻止这种行为.
如果需要在脚本中引用id,可以使用控件的ClientID,如下所示:
<script type="text/javascript">
var theSpan = document.getElementById('<%= position_title.ClientID %>');
</script>
Run Code Online (Sandbox Code Playgroud)
.Net 总是会用一些损坏的(稍微可预测的,但仍然不要指望它)值替换你的 id 值。你真的需要有那个 id runat=server 吗?如果你不输入 runat=server,那么它不会破坏它......
添加:就像 leddt 所说,您可以使用 ClientID 引用 span(或任何带有 id 的 runat=server),但我认为这在 CSS 中不起作用。
但我认为如果你的 CSS 使用基于 ID 的选择器,你会遇到更大的问题。您不能重复使用 ID。同一页面上不能有多个具有相同 ID 的项目。.Net 会抱怨这一点。
那么,考虑到这一点,您重构 CSS 的工作范围是否会变得更大一些?