IE8中的jQuery CSS错误

我试图从css获取具有背景图像的元素的属性时在IE8中有一个错误。

el.css({ 'background-position': "10px 10px"}); //set some alert(el.css("background-position")); //get the value 

在Opera,FF,Chrome,Safari的作品中,我获得了“10px 10px”。 不是在我不明确的IE8中。 我打开了一个错误报告 ,但在那之前你认为这将成为一个很好的解决方案。 我该如何以其他方式获得这些值?

这应该有所帮助。

它链接到jquery票2462 ,这也很有趣

编辑第一个链接死机, 后卫机器来救援。

而且,以防archive.org曾经打包过,这里是dextrose博客文章的内容。

在询问对象的背景位置时,jQuery(至少直到版本1.2.6)在Internet Explorer中存在问题。

 $('h1:first').css('background-position'); 

在其他A级浏览器中,您将获得2个值(以px或%表示),分别表示元素的x位置和y位置。 在Internet Explorer(6和7)中,您未定义。 问题是IE不知道背景位置是什么,它只知道其他两个调用:background-position-x和background-position-y。 这是一段用于处理此问题的JavaScript代码。

 (function($) { jQuery.fn.backgroundPosition = function() { var p = $(this).css('background-position'); if(typeof(p) === 'undefined') return $(this).css('background-position-x') + ' ' + $(this).css('background-position-y'); else return p; }; })(jQuery); 

您现在可以使用此jQuery插件来获取元素的背景位置:

 $('h1:first').backgroundPosition(); 

我从来没有试过这个,但我发现通过单独请求位置你得到一个结果,所以:

 alert(el.css("background-position-y")); //get the y value alert(el.css("background-position-x")); //get the x value 

然后你可以结合两个:)

如果你警告background-property,那么你也会得到这个位置。 一个非常糟糕的解决方法,但我能想到的第一个……

 alert(el.css("background")); //url(some/url/to/image.jpg) no-repeat 10px 10px 

然后你必须得出“px”后面的数值

我将最终解析他们:

 alert(el.attr('style')); // this seems to work in all browsers