Jquery SVG元素CSS更改在Chrome 35-36中不可见

Jquery SVG元素CSS更改在Chrome 35-36中不可见,jquery,css,google-chrome,svg,google-chrome-devtools,Jquery,Css,Google Chrome,Svg,Google Chrome Devtools,我有一个包含大量SVG元素的应用程序。当我将鼠标悬停在SVG元素上时,它们会临时更改颜色,如果我单击其中一个元素,它会永久更改颜色(或者直到再次单击为止)。 单击SVG元素时,此代码称为: styles = styles + " selected"; $(this).attr("class", styles); CSS规则用颜色填充SVG元素。这在所有浏览器中运行了一段时间,但在Chrome35中已经停止运行,问题在36测试版中仍然存在。它似乎是固定在37。 在Chrome中,GUI似乎被卡住

我有一个包含大量SVG元素的应用程序。当我将鼠标悬停在SVG元素上时,它们会临时更改颜色,如果我单击其中一个元素,它会永久更改颜色(或者直到再次单击为止)。 单击SVG元素时,此代码称为:

styles = styles + " selected";
$(this).attr("class", styles);
CSS规则用颜色填充SVG元素。这在所有浏览器中运行了一段时间,但在Chrome35中已经停止运行,问题在36测试版中仍然存在。它似乎是固定在37。 在Chrome中,GUI似乎被卡住了——悬停和单击操作可以工作,但颜色变化不可见——代码执行正确,但似乎渲染不正确

我有几点见解:

  • 这是我第一次这样做——当我在应用程序中的其他地方导航并返回(它再次显示SVG)时,它开始工作
  • 当我在Dev工具中检查代码时,我看到元素具有“selected”类,并且元素具有彩色填充(在CSS检查器中)-但是用户看不到它。当我在CSS检查器中禁用并启用任何CSS规则时,它开始工作。 我研究了Chrome的变更记录,但找不到任何相关的。它可以在所有其他主流浏览器中正常工作
  • 编辑:无论我以何种方式将规则添加到元素中,在我重新加载整个父元素之前,它都不会呈现规则,这是我无法做到的。 代码似乎完全符合我的要求(内部),但Chrome不会显示更改。 是否有某种方法可以模拟与Google开发工具css规则更改相同的操作?(这对我总是有好处的)

    亲切问候,,
    Lukas

    如果您想更新网页的CSS规则,可以通过

    document.styleSheets
    
    所以第一个样式表是

    document.styleSheets[0]
    
    所以如果你有

    p {
        color: blue;
    }
    
    然后在页面的唯一样式表中

    var rule = document.styleSheets[0].cssRules[0]
    


    将更新规则中的颜色属性。还有更多信息。

    嗨,罗伯特,问题是-为什么它不能像其他浏览器或Chrome版本那样正确填充,我如何才能强制它按照我想要的方式运行?可能是个bug。正如您已经发现的,您可以删除并重新创建CSS规则来解决它$css(“填充”、“02B2B0”);它不起作用。这就是你的意思吗?不,我不是这个意思。我的意思是删除规则本身并重新创建它,而不是重新创建您对规则的元素赋值。罗伯特,谢谢您尝试帮助我。我不明白我该怎么做。css规则在.css文件中定义并正常工作。我如何模拟与Chrome开发者工具中相同的行为——禁用和启用规则?我解析了样式表,删除了规则,然后再次插入,到目前为止,它似乎已经修复。注意:样式表中的任何更改似乎都会起作用。非常感谢你,罗伯特。
    document.styleSheets[0].cssRules[0].style.setProperty('color','#00cc00',null);