使用addClass()在IE6中未应用的类

我的HTML中包含以下DIV,其中包含大量背景图像:

根据选择页面上表单上的选择框,背景图像将滚动到不同的点。 这些位置的定义如下:

 #widget-image.tyreinfo1 { background-position: 0px -105px } #widget-image.tyreinfo2 { background-position: 0px -210px } #widget-image.tyreinfo3 { background-position: 0px -315px } #widget-image.tyreinfo4 { background-position: 0px -420px } #widget-image.tyreinfo5 { background-position: 0px -525px } 

选择框上的代码是:

 onfocus="$('#widget-image').removeClass().addClass('tyreinfo1');" 

5个选择框,每个框添加一个不同的tyreinfo类。

令人惊讶的是,它在IE6中不起作用。 我已经使用调试工具栏进行了检查,并且确实正在应用这些类,但是每次背景位置都会重置为0px 0px。

任何帮助赞赏!

首先手动编写html和css以检查CSS是否正常工作,我怀疑这是由IE6的错误CSS实现引起的。

我想你是在#widget-image上设置背景图像(完全合理)但IE6会将’#widget-image.tyreinfo1’读作’.tyreinfo1’(完全有缺陷),这意味着#widget-image上的定位需要偏爱。 你可以试试

 #widget-image.tyreinfo1 { background-position: 0px -105px !important } 

但是你可能最好为每个class级设置完整的背景风格。

试试这个:你只是简单地指定了.removeClass(),你没有指定要删除的类。 我认为你试图删除现有的类并为其添加一个新类。 所以这就是我的建议。

 $('#widget-image').removeAttr('class').addClass('tyreinfo1'); 

您使用的是PNG和PNG修复程序脚本吗? 如果是这样,后台定位将无法在IE6中运行。 每次更新位置时,还必须添加图像URL。

我同意@Inrbob。 首先写出CSS以确保它以这种方式工作。 然后,如果是,那么试试这个:

你有选择权吗? 为每个选择一个id。 然后附加一个单独的javascript文件,并使用ID调用它。

 $('#id1').click(function() { $('#widget-image').removeAttr('class').addClass('.whatever'); }); 

您也可以尝试另一种方法,即使用focus()。

 $('#id1').focus(function() { $('#widget-image').removeAttr('class').addClass('.whatever'); }); 

我怀疑任何解决方案都应该有效。

如果没有,那么我建议用http://jsfiddle.net发布你的整个HTML和CSS,让我们仔细看看整个情况。

祝好运。

也许是因为你的css定义缺少一个分号;

 #widget-image.tyreinfo1 { background-position: 0px -105px; } 

否则,您可以尝试通过更改属性的值来更改类,例如:

 onfocus="$('#widget-image').attr('class','tyreinfo1');" 

在某些情况下,这对我有用,其他方法也失败了。 但是,发布更多示例代码当然可以提供帮助。