您发现的脚本使问题过于复杂。以下对我有用:
$(function(){
// Cache reference to our container
var $container = $("#container");
// A function for updating max-height
function updateMaxHeight () {
$container.css("max-height", $(this).height() - 100);
}
// Call updateMaxHeight when browser resize event fires
$(window).on("resize", updateMaxHeight);
});
一个警告是,在调整浏览器大小时会多次调用 resize 事件。它不仅仅是在调整浏览器大小后调用。结果,您可能会调用数百次回调函数 - 这通常是一个坏主意。
解决方案是限制或消除事件。节流意味着您不会让回调在一段时间内被触发超过 x 次(可能每秒 5 次)。去抖动意味着您在从最后一个调整大小事件经过一定时间跨度后触发回调(等到调整大小事件后 500 毫秒)。
jQuery 目前不支持节流或去抖动选项,尽管有插件。您可能使用过的其他流行库确实具有这些功能,例如下划线:
$(function(){
// Cache reference to our container
var $container = $("#container");
// A function for updating max-height
function updateMaxHeight () {
$container.css("max-height", $(this).height() - 100);
}
// Version of updateMaxHeight that will run no more than once every 200ms
var updateMaxHeightThrottled = _.throttle(updateMaxHeight, 200);
// Call updateMaxHeightThrottled when browser resize event fires
$(window).on("resize", updateMaxHeightThrottled);
});