You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery中resize()函数仅刷新生效、窗口调整时失效问题求助

嘿,我来帮你搞定这个resize事件的问题!

你遇到的情况很常见——代码只在刷新时生效,窗口调整没反应,大概率是脚本执行时机不对,或者没在页面初始化时主动跑一遍逻辑。

问题出在哪?

  • 如果你的这段脚本是放在<footer>元素前面加载的,那执行$(window).resize(...)的时候,$('#footer')还没被浏览器渲染出来呢!事件是绑定了,但根本找不到对应的元素,自然没效果。
  • 另外,你的代码只有在窗口resize的时候才会执行,但页面刚加载时并不会自动触发resize事件——你说刷新时生效,可能是刷新时浏览器窗口刚好有尺寸变化,刚好触发了一次,但正常加载时是不会跑这段逻辑的。
修正后的代码

把代码包裹在$(document).ready()里,确保DOM完全加载后再绑定事件,同时在页面初始化时主动调用一次逻辑,这样不管是刷新还是窗口调整,都会生效:

<script>
$(document).ready(function() {
  // 把逻辑抽成复用的函数
  function adjustLayout() {
    const footerHeight = $('#footer').outerHeight();
    $('#footer').height(footerHeight);
    $('#content').css({ 'paddingBottom': `${footerHeight}px` });
  }

  // 窗口调整时触发
  $(window).resize(adjustLayout);
  
  // 页面刚加载时主动跑一遍
  adjustLayout();
});
</script>

额外优化小建议:

  • 我注意到你先拿了footer的outerHeight,又把它设为footer的height——这步其实有点多余哦,除非footer的高度是动态变化的(比如内容撑高),不然可以直接删掉$('#footer').height(footerHeight);,避免不必要的样式覆盖。
  • 另外,resize事件会在窗口调整时频繁触发,可能会有点性能问题,加个防抖处理会更友好:
<script>
$(document).ready(function() {
  let resizeTimer;
  
  function adjustLayout() {
    const footerHeight = $('#footer').outerHeight();
    $('#content').css({ 'paddingBottom': `${footerHeight}px` });
  }

  $(window).resize(function() {
    clearTimeout(resizeTimer);
    resizeTimer = setTimeout(adjustLayout, 200); // 200ms后再执行,避免频繁触发
  });
  
  adjustLayout();
});
</script>

这样调整后,窗口拖动时逻辑会正常执行,页面加载时也会自动初始化好样式啦!

内容的提问来源于stack exchange,提问作者Akshay Rathod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:08:28