2012-08-01 76 views
0

我有一些CSS代码,只有当另一元素的值是0IE7改变CSS选择

#type_46[value="0"] ~ .exercise_dur { 
    display: none; 
    } 

这适用于每一个浏览器除了IE7隐藏了某些元件的顺序(IE9在IE7模式/ IE7原稿模式)

当使用即开发工具,如果我直接在样式列表中查找故障排除后,我看到:

[value='0']#type_46 ~ .exercise_dur 

这显然打破了选择,并使其无法工作。如果我手动(在开发工具中)纠正这个问题,它完美的工作没有任何问题。 有没有人遇到过这个问题?如果是这样,是否有一种解决方案,而不是在javascript中隐藏元素?

编辑:(不能回答我自己的问题,所以我必须编辑) 看来,问题是ie7不动态更新CSS。当代码初始化时,它不起作用,因为在加载css之前没有设置该值。它会更新,如果我强制它(即更改代码或禁用/重新启用样式),但不会更新(即使我更改该值),直到它再次被强制。 ie7并不是这个项目的一个重要优先事项,隐藏元素并不是绝对必要的,所以我想我现在要离开这个,并在必要时在jQuery中实现它。

谢谢。

+1

这不会破坏选择器;它是完全有效的(尽管它看起来很奇怪),并且应该在IE7以及IE9的IE7模式下工作。我们可以看到你的网页吗? – BoltClock 2012-08-01 16:16:07

+0

不幸的是,这是我无法分享的私人项目的一部分。任何想法为什么交换id和值选择器修复它? – reffu 2012-08-01 16:19:18

+1

我明白,IE7有时会在属性选择器上跳转,这可能是其中一次。有什么方法可以在测试用例中重现此行为?或者,如果它是私人项目的一部分,如果您的项目是在Intranet中托管然后[这个问题似乎相似](http://stackoverflow.com/questions/8915855/ie7-ignores-css-attribute-selector-only- on-pages-coming-from-production-server),尽管在这个问题中IE7完全忽略了选择器。 – BoltClock 2012-08-01 16:20:19

回答

1

支持IE7中的一般兄弟选择器是最好的。我建议找出另一种方法来选择你的元素,或者使用jQuery。

Read more.

+0

这就是它,虽然链接的文章没有描述IE7有哪些类型的错误。 – BoltClock 2012-08-01 16:40:01