IE8中的jQuery CSS错误

时间:2009-09-14 11:04:34

标签: jquery css internet-explorer-8

我在尝试从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中。 我打开了一个bug report,但在那之前你认为这将是一个很好的解决方法。我该如何以其他方式获得这些价值?

4 个答案:

答案 0 :(得分:8)

this应该有所帮助。

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

编辑第一个链接已死,wayback machine以进行救援。

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

  

jQuery(至少在版本1.2.6之前)存在Internet问题   询问对象的背景位置时的资源管理器。

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

在其他A级浏览器中,您获得2个值(以px或%为单位)   分别表示x的位置和y位置   元件。在Internet Explorer(6和7)中,您未定义。问题   是IE不知道背景位置是什么,它只知道2   其他调用: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();

答案 1 :(得分:4)

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

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

然后你可以将两者结合起来:)

答案 2 :(得分:1)

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

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

然后你必须得出“px”

后面的数值

答案 3 :(得分:1)

我将最终解析它们:

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