【发布时间】:2012-09-26 10:08:29
【问题描述】:
我有以下 HTML 代码结构(示例):
<p paraclass="M">Some Text</p>
<p paraclass="A1">enum 1</p>
<p paraclass="A1">enum 2</p>
<p paraclass="A2">enum 2.1</p>
<p paraclass="A2">enum 2.2</p>
<p paraclass="A1">enum 3</p>
并希望它像这样呈现:
Some Text
1 enum 1
2 enum 2
2.1 enum 2.1
2.2 enum 2.2
3 enum 3
这对 CSS-pseudotag 非常有效,例如:
p[paraclass="A1"]:before{
content:counter(A1);
counter-increment:A1;
counter-reset: A2;
}
不幸的是,这在 IE7 中不起作用。
有什么好的解决方案可以在不更改 HTML 的情况下在 IE7 中工作?
对于 JS 解决方案,我有关于我需要的计数器的所有信息(比如ID,他们重置的计数器以及他们拥有的列表样式类型)。有没有更好/更简单的方法?如果没有,我怎样才能使用像“lower-roman”这样的计数器样式而不自己实现它们?
注意:可以使用 jQuery 1.6.2。
【问题讨论】:
-
“不改变 HTML”——我们也不能通过 jQuery 来改变它吗?
-
可以更改 HTML,但我想知道是否有不这样做的简单方法。
-
我会将您的代码转换为嵌套的有序列表。这就是它们的用途,您完全错过了这里的语义。此外,
paraclass不是有效属性。在 HTML5 中,您可以使用有效的data-paraclass。 -
selectivizr 很好,可以在 IE 6-8 中模拟 CSS3 选择器。我想你需要一些额外的东西来添加反增量。
-
selectivizir 不支持 ":before" 但还是很高兴知道,谢谢 :)
标签: javascript css internet-explorer-7 counter