removeClass()和addClass()在Safari中使用Casing Strange行为

时间:2013-06-09 23:54:02

标签: jquery css

此处示例:http://jsfiddle.net/Zyniker/cSPBf/

背景 我有一个页面,它使用CSS演示了许多不同的列表类型。当页面的访问者点击按钮时,样本列表删除了所有类(即removeClass()),然后具有与添加到其中的单击按钮相对应的特定类(即addClass())。显然,这个设置使用jQuery。

问题 一切都按照预期在Chrome和Firefox中运行(我还没有测试过IE),但Safari在我的列表样式中只占三分之一。有关有问题的代码部分,请参阅jsfiddle链接。值得注意的是,只有在多种样式之间来回切换时才会出现问题(甚至不是所有样式)。计数器()的问题似乎出现在编号关闭(例如,第一个li接收0)或完全不起作用(即,所有li接收0)的情况下。值得注意的是,当在格式化样式按钮之间按下“重置格式化”按钮(其仅对示例文本执行removeClass())时,不会出现该问题。这更奇怪,因为每个按钮在相关的addClass()指令之前都包含removeClass()指令。

更多信息 正如您从jsfiddle中看到的,我正在使用:before和content将列表编号添加到示例文本中。 Safari对于在counter()之前没有任何内容的任何列表样式都没有问题。当在counter()之前存在某些东西时(例如,'\ 28'),会出现问题。我不确定是什么导致了这种奇怪的行为。

远程排查 我重新安排了内容样式的元素,只有当counter()在它之前有某些东西时才会出现问题。更改content指令中的间距无效。如果两个指令在一行或两行上,删除然后添加类的jQuery反应完全相同;此外,添加延迟没有任何作用。

一些代码 CSS示例

.zlist-upper-roman-parens ol {
    list-style: none;
    counter-reset: zlist-upper-roman-parens;
}

.zlist-upper-roman-parens ol li:before {
    content: '\28'counter(zlist-upper-roman-parens, upper-roman)'\29';
    counter-increment: zlist-upper-roman-parens;
}

jQuery示例

$("#zlist-upper-roman-parens").click(function () {
    $("#zlist-example-displayer2").removeClass()
    $("#zlist-example-displayer2").addClass("zlist-upper-roman-parens");
});

0 个答案:

没有答案