Opera有时会忽略jquery函数,直到用户与页面交互之后

Opera有时会忽略jquery函数,直到用户与页面交互之后,jquery,css,opera,Jquery,Css,Opera,我在歌剧中遇到了一个很奇怪的错误。检查以下代码: $(document).ready(function(){ var $imgHeight = $('.collection-item-image').width() / 3 * 4; $('.collection-item-holder').css('padding-top',$imgHeight + 'px'); $(window).resize(function(){ var $imgHeight =

我在歌剧中遇到了一个很奇怪的错误。检查以下代码:

$(document).ready(function(){
    var $imgHeight = $('.collection-item-image').width() / 3 * 4;
    $('.collection-item-holder').css('padding-top',$imgHeight + 'px');

    $(window).resize(function(){
        var $imgHeight = $('.collection-item-image').width() / 3 * 4;
        $('.collection-item-holder').css('padding-top',$imgHeight + 'px');
    });
});
有时opera会忽略要在文档就绪时运行的代码。其他浏览器都可以正常运行。我认为它可能完全忽略了文档就绪,但我用一个警报函数对它进行了测试,发现它每次都能工作。看起来,虽然在正常的文档准备状态下它有时会忽略它,但如果我在函数运行之前添加一个警报,在警报框中按“ok”时,代码每次都会正常运行。由于某些原因,有时用户必须与页面交互才能运行页面


有人知道为什么或者更好的方法来解决这个问题吗?请记住,这似乎只是在以这种方式设置CSS时发生的,在“调整窗口大小”时,代码会完美地执行并按其应有的方式显示。

不确定是什么导致了此问题,但将函数包装在
窗口中。load()
已将问题排序。

根据: “处理程序传递给了.ready()保证在DOM就绪后执行,因此这通常是附加所有其他事件处理程序和运行其他jQuery代码的最佳位置。当使用依赖CSS样式属性值的脚本时,在引用脚本之前引用外部样式表或嵌入样式元素非常重要。”


换句话说,这是在页面结构就绪之后运行的,而不是在加载整个页面(图像、外部链接)时运行。因为您说它有时会工作,所以这可能是一种竞争条件,当映像加载速度非常快或从缓存加载时,当DOM就绪事件触发时,它可能已经就绪。在您的情况下,当页面上的所有媒体都已加载时,onload是合适的事件。

每隔一个浏览器都会正常运行。我在试着理解你的问题。预期的结果是什么?Opera中的
$imgHeight
计算不正确吗?它要么忽略高度,要么试图过快运行函数,要么计算错误的高度。无论哪一个,$imgHeight要么不正确,要么由于某些原因没有正确设置(如果有的话)。