2010-01-25 65 views
2

我有一个jquery/javascript代码块,它根据浏览器宽度设置图像的左边距。在IE浏览器中使用.css()操作jquery问题(bug?)

我做了一些总和来计算所需的左边距,它进入var $ diff。

此代码工作正常:

$('#background-wrapper>img').attr('alt',$diff); 

这表明的款项都做工精细的图像与DIFF插入其alt属性为$正确的值结束。这适用于IE,FF,Chrome。

但是,如果我的代码更改为:

$('#background-wrapper>img').css('margin-left',$diff); 

那么Firefox和Chrome做工精细,使用$ DIFF为左缘,因为我想要的图像值,但IE引发运行时错误和停止运行脚本,引用jquery文件中的无效参数。我使用的是jquery 1.3.2.min。

任何想法?

继承人为全功能的代码。

function imageResizeCenter() { 
    var $windowh = jQuery(window).height(); 
    var $windoww = jQuery(window).width(); 

    var imagesrc = $('#background-wrapper2>img').attr('src'); 

    var myimage = new Image(); 

    myimage.src = imagesrc; 
    var $width = myimage.width; 
    var $height = myimage.height; 

    var $ratio = parseInt($width,10)/parseInt($height,10); 

    var $newwidth = parseInt($windowh,10)*$ratio; 

    var $diff = (parseInt($windoww,10)-parseInt($newwidth,10))/2; 
    if($diff<0) $diff=0; 
    $('#background-wrapper2>img').attr('height',$windowh).css('margin-left',$diff); 

} 
+0

有什么特别之处图像或背景的包装?我在IE6,IE7,IE8和FF3中尝试了这个确切的脚本,并且我没有得到任何错误。 – attack 2010-01-26 03:33:58

+0

我不认为这有什么奇怪的......背景div只是一个100%宽度和高度div,绝对定位坐在网站的其余部分后面。 该图像是多个图像中的一个,除了一组图像外,其余都显示为:无。 最终结果是在网站的背景中全屏(或大中心)图像的幻灯片放映。 我在背景div中使用图像,而不是实际的背景图像CSS,以便在使用幻灯片显示过渡到图像前,可以使图像预加载。 – petesiss 2010-01-27 11:06:04

回答

1

也许

$('#background-wrapper>img').css('margin-left',$diff + 'px'); 
+0

+1。我猜想单位的缺乏在某些浏览器中是个问题。 – 2010-01-25 16:18:37

+0

谢谢你们的回复。我刚刚尝试了所有这些建议,并且chrome/ff对于所有这些vaients都显得很满意,但IE仍然给出相同的错误 - 即使我只是将属性更改为marginLeft。 – petesiss 2010-01-25 16:29:56

+0

你可以发布你的JavaScript代码和标记,或它的一个片段吗? – 2010-01-25 16:46:31

0

使用JavaScript设置CSS属性有一点需要注意:不要使用破折号分隔多字的属性,可以使用驼峰规则。所以margin-left应该marginLeft ...

$('#background-wrapper > img').css('marginLeft', $diff); 
+1

虚线和驼峰版本都可以运行: “此外,jQuery可以同样解释多字属性的CSS和DOM格式。例如,jQuery可以理解并返回.css('background-color')和的CSS( '的backgroundColor')“。 http://api.jquery.com/css/ – 2010-01-25 16:41:44