Javascript 脚本改为;作物“;图像间歇性运行。

Javascript 脚本改为;作物“;图像间歇性运行。,javascript,css,wordpress,Javascript,Css,Wordpress,我正在使用一些javascript使图像看起来被裁剪。我基本上是找到高度超过400px的图像,找到它们有多少像素超过400px,将其拆分,并在顶部和底部制作负边距。然后,我将图像包装在一个div中,作为一个框架,图像位于该框架后面 由于某些原因,脚本偶尔会运行。有时,它会正确裁剪高度超过400px的所有。特色图像img图像(主页上只有一个特色图像,需要裁剪)。其他时候,脚本不会检测到任何此类图像,因此不会进行裁剪 我在一个$(document).ready()调用中运行脚本,所以我不确定是什么导

我正在使用一些javascript使图像看起来被裁剪。我基本上是找到高度超过400px的图像,找到它们有多少像素超过400px,将其拆分,并在顶部和底部制作负边距。然后,我将图像包装在一个div中,作为一个框架,图像位于该框架后面

由于某些原因,脚本偶尔会运行。有时,它会正确裁剪高度超过400px的所有
。特色图像img
图像(主页上只有一个特色图像,需要裁剪)。其他时候,脚本不会检测到任何此类图像,因此不会进行裁剪

我在一个
$(document).ready()
调用中运行脚本,所以我不确定是什么导致了一个竞争条件

链接

网站: (刷新几次以了解我的意思)

剧本: (有问题的行是13-20)

不正确:


正确:

您正在检查图像的
高度
属性,这些属性在document ready上不一定存在(document ready并不意味着图像已加载)。在
$(window).load()中绑定该函数,或者在
$('img').load()函数中绑定该函数

例如:

$(".featured-image img").load(function() {
    var $e = $(this);

    if ( $e.height < 400 ) return;

    var overflow = featuredHeight - $e.height();
    var top      = overflow / 2;
    var bottom   = overflow / 2;

    if ( overflow % 2 == 1 ) top++;

    $e.css({
        "margin-top": top + "px", 
        "margin-bottom": bottom + "px"
    });
});
$(“.featured image img”).load(函数(){
var$e=$(本);
如果($e.高度<400)返回;
var overflow=featuredHeight-$e.height();
var top=溢出/2;
var底部=溢出/2;
if(溢出%2==1)top++;
$e.css({
“页边距顶部”:顶部+像素,
“页边距底部”:底部+像素
});
});

我假设不应该在document ready块中调用
$('img').load()
对吗?我觉得如果图像被缓存或类似的东西,这不会触发。