无法获取垂直图像

Posted

技术标签:

【中文标题】无法获取垂直图像【英文标题】:Can't get vertical images 【发布时间】:2021-06-28 12:46:51 【问题描述】:

我正在使用以下代码获取垂直图像并向其添加类,但我不知道为什么,它不起作用:

    //wrapall div inside a container
    $('#page_container .et_pb_column_1 .et_pb_module').wrapAll('<div class="slider-pag_interna">');

    //for each img I check height and width and assign some classes
    $(".slider-pag_interna div span img ").each(function()
        
        if ($(this).width() < $(this).height()) 
          $(this).parent().parent().addClass("vertical");
        
        else
            $(this).parent().parent().addClass("horizontal");
        
        
    );

我的html代码:

<div id="page_container" class="et_pb_row et_pb_row_0 et_pb_row--with-menu" style="z-index: 3;">
        <div class="et_pb_column et_pb_column_1_2 et_pb_column_1  et_pb_css_mix_blend_mode_passthrough et-last-child">
            <div class="et_pb_module et_pb_image et_pb_image_0">
                <span class="et_pb_image_wrap "><img loading="lazy" src="https://images.unsplash.com/reserve/Af0sF2OS5S5gatqrKzVP_Silhoutte.jpg?ixid=MXwxMjA3fDB8MHxzZWFyY2h8M3x8cGljfGVufDB8fDB8&ixlib=rb-1.2.1&w=1000&q=80"   ></span>
            </div>
            <div class="et_pb_module et_pb_image et_pb_image_1">
                <span class="et_pb_image_wrap "><img loading="lazy" src="https://images.unsplash.com/reserve/Af0sF2OS5S5gatqrKzVP_Silhoutte.jpg?ixid=MXwxMjA3fDB8MHxzZWFyY2h8M3x8cGljfGVufDB8fDB8&ixlib=rb-1.2.1&w=1000&q=80"   ></span>
            </div>
            <div class="et_pb_module et_pb_image et_pb_image_2">
                <span class="et_pb_image_wrap "><img loading="lazy" src="https://www.threebu.it/wp_threebu/wp-content/uploads/2017/06/vertical-farming-chris-jacobs.jpg"  ></span>
            </div>
            <div class="et_pb_module et_pb_image et_pb_image_3">
                <span class="et_pb_image_wrap "><img loading="lazy" src="https://images.unsplash.com/reserve/Af0sF2OS5S5gatqrKzVP_Silhoutte.jpg?ixid=MXwxMjA3fDB8MHxzZWFyY2h8M3x8cGljfGVufDB8fDB8&ixlib=rb-1.2.1&w=1000&q=80"   ></span>
            </div>
        </div>

我的test page

【问题讨论】:

请在问题中包含 html/图像,最好是在 sn-p 中(编辑并单击 [&lt;&gt;])。 究竟是什么不工作?在您的测试页面上,我确实在 .et_pb_module 容器上看到了正确的类 啊 - 没看到 extra .wrapAll() (这里没有提到) 如前所述,请包括所有相关信息在问题中。见minimal reproducible example。 将代码复制到 jsfiddle - 工作正常:jsfiddle.net/7untm5kh 如上所述,@estellechvl 打开您的页面并检查图像显示它们具有预期的类。 是的,freedomn-m 是对的。所以基本上把你的代码包装成$(window).on("load", () =&gt; );这样的东西就可以了 【参考方案1】:

在“加载窗口”函数中插入所有内容而不是“文档就绪”修复了问题

$(window).on('load', function()

    $('#page_container .et_pb_column_1 .et_pb_module').wrapAll('<div class="slider-pag_interna">');

    $(".slider-pag_interna div span img ").each(function()
        
        if ($(this).width() < $(this).height()) 
          $(this).parent().parent().addClass("vertical");
        
        else
            $(this).parent().parent().addClass("horizontal");
        
        
    );
); 

【讨论】:

【参考方案2】:

您的脚本似乎在 DOM 渲染之前执行,这就是为什么您的脚本中所有宽度与高度比较都返回 FALSE 的原因。所有元素的高度 = 0 和宽度 = 0。

您的 Jquery 代码现在位于测试页上的 &lt;head&gt; 标记中。 尝试将其移至代码中的&lt;body&gt; 部分,一切都会好起来的..

【讨论】:

尝试在 Chrome 调试器中调试它,你会看到所有图像的高度和宽度都返回为零。当我将脚本复制到正文部分时,一切正常。 我也在尝试加载窗口功能,但有时它不起作用,可能是缓存问题...我在想“加载窗口”功能在加载和“文档准备就绪”期间正在运行是加载整个windows内容后的所有功能......我现在觉得很愚蠢...... GGKMNTN,最后你是怎么解决的? 我在“加载窗口功能”中插入了所有东西,而不是“准备好文档”

以上是关于无法获取垂直图像的主要内容,如果未能解决你的问题,请参考以下文章

Python 如何使用 HoughLines 和 OpenCV 检测图像中的垂直线和水平线?

获取垂直旋转iphone

如何获取图像对象的位置

IE 10 垂直拉伸图像?

带有卷积的垂直边缘检测,使用 Swift 给出透明图像

使用css和jquery调整图像大小后获取图像高度?