背景:我有一个HTML页面,这使得使用HTML5数据-属性 。 我的一些CSS样式使用属性选择基于这些自定义属性值的风格元素。
问题:当我更新使用JavaScript一个数据-属性的值,通过镀铬再整受影响的元素,但IE8(这我需要支持)正确响应不......不会立即进行。 获得IE8更新款式的唯一方法是通过一些其他方式的CSS样式(如删除或修改直接摆弄class
属性)。
例:
<html>
<head>
<style type="text/css">
.Test[data-foo="bar"]{ background-color: Green; }
.Test[data-foo="baz"]{ background-color: Red; }
</style>
<script src="scripts/jquery-1.8.3.js" type="text/javascript"></script>
<script type="text/javascript">
function change(div) { $(div).attr("data-foo", "baz"); }
function toggleTest() { $("DIV").toggleClass("Test"); }
</script>
</head>
<body>
<div data-foo="bar" onclick="change(this);" class="Test">Testing</div>
<div data-foo="bar" onclick="change(this);" class="Test">Testing</div>
<input type="button" onclick="toggleTest()" value="Toggle Class" />
</body>
</html>
在Chrome中,您可以点击的Test1和Test2的酒吧和他们变成红色瞬间。 在IE8中,你必须点击该栏,然后单击按钮两次(一次删除类,再恢复它)。
问:什么是解决办法? 很显然,我已经确定了一个(添加/删除类),但它是丑陋的。 有一种优雅的,不显眼的方式来强制IE8重新评估元素的风格,而不出渣与周围的元素的属性?