【问题标题】:JQuery set iframe height depending on iframe sourceJQuery 根据 iframe 源设置 iframe 高度
【发布时间】:2015-12-23 00:16:05
【问题描述】:

我正在使用以下脚本来设置 YouTube iframe 的高度,使其保持 16:9 的良好纵横比。宽度始终为容器的 100%。

脚本应该只设置 YouTube 视频的高度。如果页面上所有 iframe 的来源相同,则此方法有效。 Youtube 嵌入设置正确,soundcloud 嵌入被忽略,但是,一旦我使用 Youtube 和 Soundcloud 源,它会同时设置两者。这是有道理的,因为 iframe 的目标不是仅设置源中包含 youtu 的高度。

如何使其仅设置源包含youtu 的 iframe 的高度?

<script>

    function iframeSizing() {
        $('iframe[src*="youtu"]').each(function() {
            var containerWidth = $('iframe').width();
            iframeWidth = containerWidth;
            iframeHeight = 0.5625 * iframeWidth;

            $('iframe').css({
                'height': iframeHeight + 'px'
            });
        });
    };

    $(window).resize(iframeSizing);
    $(document).ready(iframeSizing);
</script>

谢谢

【问题讨论】:

    标签: javascript jquery html css iframe


    【解决方案1】:

    您的问题是您一遍又一遍地使用$('iframe') 选择器,同时您的函数实际上并不知道您指的是哪个iframe

    .each() 函数中的选择器应该是 $(this) 而不是 $(iframe)

    所以,$(this).width()$(this).css()

    基本上,.each() 函数的工作方式是循环使用 $('iframe[src*="youtu"]') 的所有元素,然后在该函数内部,要引用循环所在的当前元素,您应该使用选择器 $(this)

    【讨论】:

    • 完美,成功了。在函数中使用 $(this) 可以解决它,并且对我来说非常有意义。我以前在这里和那里看到过 $(this) ,但直到现在才需要或完全理解它。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-11-22
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 2018-06-30
    • 2014-10-19
    • 2014-01-07
    相关资源
    最近更新 更多