Javascript 如何在jquery中将if条件添加到$(窗口)。调整事件大小?

Javascript 如何在jquery中将if条件添加到$(窗口)。调整事件大小?,javascript,jquery,html,responsive-design,Javascript,Jquery,Html,Responsive Design,我试图使所有嵌入式视频响应,因为我找不到一个好的解决方案,使视频响应使用引导3。使用下面的代码,我可以使任何视频响应。但我想在下面的代码中添加If条件,以便在调整窗口大小时,代码仍能完成任务 我的jquery代码: $(文档).ready(函数(){ 函数show(){ var containerWidth=$(“.col video”).width(); $('iframe')。每个(函数(){ var iframeWidth=$(this.attr(“宽度”); var iframehig

我试图使所有嵌入式视频响应,因为我找不到一个好的解决方案,使视频响应使用引导3。使用下面的代码,我可以使任何视频响应。但我想在下面的代码中添加If条件,以便在调整窗口大小时,代码仍能完成任务

我的jquery代码:

$(文档).ready(函数(){
函数show(){
var containerWidth=$(“.col video”).width();
$('iframe')。每个(函数(){
var iframeWidth=$(this.attr(“宽度”);
var iframehight=$(this.attr(“height”);
var标志=容器宽度/iframeWidth;
var newHeight=iframehight*标志;
$(此).attr(“宽度”,“100%”);
$(this.attr(“高度”,newHeight);
});
$('video')。每个(函数(){
var videoWidth=$(this.attr(“width”);
var videoHeight=$(this.attr(“height”);
var标志=集装箱宽度/视频宽度;
var newHeight=videoHeight*标志;
$(此).attr(“宽度”,“100%”);
$(this.attr(“高度”,newHeight);
});
}
show();
});

引导101模板
你好,世界

您可以在“窗口大小调整”事件中运行代码,因为该事件会持续触发,因此您可以使用去盎司功能,例如:

var myEfficientFn = debounce(function() {
    show();
}, 250);

$(window).on('resize', myEfficientFn);

// Returns a function, that, as long as it continues to be invoked, will not
// be triggered. The function will be called after it stops being called for
// N milliseconds. If `immediate` is passed, trigger the function on the
// leading edge, instead of the trailing.
function debounce(func, wait, immediate) {
    var timeout;
    return function() {
        var context = this, args = arguments;
        var later = function() {
            timeout = null;
            if (!immediate) func.apply(context, args);
        };
        var callNow = immediate && !timeout;
        clearTimeout(timeout);
        timeout = setTimeout(later, wait);
        if (callNow) func.apply(context, args);
    };
};
演示:

使用
$(窗口)。在
$(文档)中调整大小()

最终结果应为:

$(document).ready(function () { 
 $(window).resize(function () {
  (function show() {
      var containerWidth = $(".col-video").width();
        $('iframe').each(function(){ 
            var iframeWidth = $(this).attr("width");
            var iframeHeight = $(this).attr("height");
            var flag = containerWidth / iframeWidth;
            var newHeight = iframeHeight * flag;
            $(this).attr("width", "100%");
            $(this).attr("height", newHeight);
        });
        $('video').each(function(){ 
            var videoWidth = $(this).attr("width");
            var videoHeight = $(this).attr("height");
            var flag = containerWidth / videoWidth;
            var newHeight = videoHeight * flag;
            $(this).attr("width", "100%");
            $(this).attr("height", newHeight);
        });
  })();

 )};
});

一种更有效的方法是在每个视频周围添加一个包装,并添加
高度:0
填充底部:56.25%
根据纵横比创建响应div,然后将视频绝对定位在包装器中。填充底部可以是CSS中的任何百分比,因为JS将在下一步进行调整

然后在页面加载时,您可以计算每个视频基于百分比的纵横比,并将其应用于父包装的底部填充

$(文档).ready(函数(){
$('iframe,video')。每个(函数(){
var iframeWidth=$(this.attr(“宽度”);
var iframehight=$(this.attr(“height”);
//计算纵横比并转换为百分比
var输出=((数学圆整(iframehight)/数学圆整(iframeWidth))*100.toFixed(2);
//将基于视频百分比的纵横比应用于父包装的填充底部
$(this).parent().css(“填充底部”,输出+“%”);
});
});
/*16:9比例的响应div*/
.视频包装器{
位置:相对位置;
垫底:56.25%;
身高:0;
宽度:100%;
保证金:0自动;
}
.videoWrapper视频,.videoWrapper iframe{
位置:绝对位置;
排名:0;
左:0;
宽度:100%;
身高:100%;
}

你好,世界