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