我可能会试图对这个过于花哨。
我有一对类似收音机的按钮,它们之间有一个分隔符,带有背景图像。单击其中一个“按钮”时,我会更改其类。分隔符的CSS键入两侧按钮的类以选择背景图像。我正在使用CSS'sibling'选择器。
我将jQuery .click事件绑定到“按钮”。他们做的第一件事是从另一个按钮中清除“选定”类,并将其设置在单击的按钮上。
例如,如果LEFT按钮class ='selected'且RIGHT按钮不是,则它们之间的分隔符将获得蓝色背景。单击右侧按钮,它会在LEFT按钮的类被清除时获得class ='selected'。分频器变红。
这适用于IE,FF,Safari等。但是IE很奇怪(IE7) - 当我点击我点击的按钮时,它只会反映分频器背景的变化!也就是说,在示例中,RIGHT按钮获得class ='selected'并在点击时立即更改。但是除非鼠标离开按钮,否则分频器会保持蓝色,然后变为红色。
类本身正在改变,因此按钮的外观会发生变化。这只是相邻的东西没有!?
它让我想起了我过去的VB6时代,你不得不定期调用'DoEvents'来让Windows进行UI更改。 IE可以有类似的东西吗?
答案 0 :(得分:1)
我不知道为什么这会有所帮助,但是将.hide()。show()添加到一个选择器中,该选择器包含更改类似乎使其更新的内容。
答案 1 :(得分:1)
我已经读过使用setAttribute更改类会强制IE7重新渲染样式。尝试一下,如果它仍然失败,我通过重写html解决了类似的IE7问题,这迫使IE7重新渲染(使用jquery):
if ($("html").hasClass("ie7")){
var tempHolder = $("#ajaxresults").html();
$("#ajaxresults").html(tempHolder);
}
至于给html或body标签ie7类,我建议看看html5boilerplate.com。如果由于某种原因你不能使用他们的解决方案,它的jquery是:
if ($.browser.msie){
if ($.browser.version < 8){
$("html").addClass("ie ie7");
}
else {
$("html").addClass("ie");
}
}