jQuery功能在Chrome中不起作用:/

问题描述:

任何人都可以帮我解决这个问题吗? 代码zip是在这里:(取链路断开)jQuery功能在Chrome中不起作用:/

我已经一切有效而Chrome 仍然计算元素完全错误(9每10倍......)的高度...


嗯,从技术上说它确实如此。

$(document).ready(function() { 
      function resizeIt() { 
       var extDiv = $('#externalWrapper').height(); 
       var wrapper1 = $('#wrapper1').height(); 
       var wrapper2 = $('#wrapper2').height(); 
       var wrapper3 = $('#wrapper3').height(); 

       $('#wrapper1-mid').css({'height':extDiv - ($('#wrapper1-top').height()+$('#wrapper1-bottom').height())-4}); 
       $('#wrapper2').css({'marginTop':extDiv-wrapper2}); 
       $('#wrapper3-mid').css({'height':extDiv -($('#wrapper3-top').height()+$('#wrapper3-bottom').height())+1}); 

       if($('ul#related-linklist > li').size() > 15) { 
        $('#spacer').attr({'height':(wrapper2-250)}); 
        $('#product-image').css({ 
         'marginTop':0, 
         'marginLeft':0 
        }); 
       } 
      } 
      resizeIt(); 
     }); 

所以这是我的代码,在Chrome中,它根本没有正确调整边距/高度。但在Safari浏览器中工作正常..

IE/Firefox不受影响。

+0

您运行的是哪个版本的Chrome? – Toby 2010-09-17 15:54:58

+0

我的Chrome版本是:6.0.472.53 – 2010-09-17 15:56:47

更新:你是对的,不需要在值的末尾添加'px'。但我已经更新了下面的代码以使用window.load,因为我认为这可能是问题所在。

当使用css您应该包括px底。此外,你有一个height属性应该是css(这是未经测试):

$(window).load(function() { 
     function resizeIt() { 
      var extDiv = $('#externalWrapper').height(); 
      var wrapper1 = $('#wrapper1').height(); 
      var wrapper2 = $('#wrapper2').height(); 
      var wrapper3 = $('#wrapper3').height(); 

      $('#wrapper1-mid').css({'height':extDiv - ($('#wrapper1-top').height()+$('#wrapper1-bottom').height())-4 + 'px' }); 
      $('#wrapper2').css({'marginTop':extDiv-wrapper2 + 'px' }); 
      $('#wrapper3-mid').css({'height':extDiv -($('#wrapper3-top').height()+$('#wrapper3-bottom').height())+1 + 'px' }); 

      if($('ul#related-linklist > li').size() > 15) { 
       $('#spacer').css({'height':(wrapper2-250) + 'px' }); 
       $('#product-image').css({ 
        'marginTop':0, 
        'marginLeft':0 
       }); 
      } 
     } 
     resizeIt(); 
    }); 
+0

嘿,谢谢你的代码,依然没有改变我害怕 - 还有,我的印象是'px'不是真的需要吗? – 2010-09-17 11:28:23

+0

如果你忽略它,jQuery将为你添加'px' – 2010-09-17 11:29:54

+0

在CSS中需要px(或其他单位),除非值为零。需要px的原因是因为还有其他几个可能的单元,CSS和JQuery都不能确定你的意思。 – Spudley 2010-09-17 11:30:35

在你的jsfiddle链接的HTML是有点乱,这可能是你的问题的根源。

您有几个未封闭的<img>元素,顶部还有一个额外的<html>,以及多个共享相同ID的元素。您还有一个嵌套在<span>内的<div>,这是无效的。

http://infohound.net/tidy/是用于验证&清理HTML的有用工具。

+0

是的我知道了,我已经整理过了 - 我说JSFiddle不会工作,因为我不能释放所有的HTML(并且我现在也列出了自闭标签) – 2010-09-17 14:05:05

+1

没有这个例子证明了这个问题,实际上很难诊断它。它不需要是整个页面,但是仍然显示问题的示例子集是必需的。 – RickF 2010-09-17 14:20:21

+0

我已经添加了尽可能多的HTML,尽可能不牺牲客户端的机密性...... – 2010-09-17 14:42:37

我注意到,在Chrome有时事情定位有点过了,这是因为WebKit渲染引擎的可能性最大。我在过去所做的工作就是嗅探Chrome并为任何受影响的对象('chrome'或'webkit'或其他)编写自定义类,然后编写特定于这些对象的代码。

这个想法承认很烂,但它是一个似是而非的解决方法/黑客,如果你现在需要这个工作。