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

如何控制移动端jqGrid的shrinkToFit属性适配不同屏幕尺寸

实现jqGrid根据屏幕宽度动态切换shrinkToFit属性

要实现屏幕宽度在320px-768px之间时shrinkToFit设为false,769px及以上时设为true,可以通过初始化时判断窗口宽度+监听窗口resize事件动态调整来完成,具体代码如下:

1. 初始化jqGrid时设置初始值

页面加载时先获取当前窗口宽度,直接把对应的值传给shrinkToFit:

const initWidth = $(window).width();
$("#yourGridId").jqGrid({
  // 你的其他jqGrid配置项
  shrinkToFit: initWidth >= 769,
  // 你的其他jqGrid配置项
});

2. 监听窗口大小变化动态调整

添加resize事件监听,根据当前宽度区间切换属性值,同时加入防抖逻辑避免频繁触发:

let resizeDebounceTimer;
$(window).on("resize", function() {
  clearTimeout(resizeDebounceTimer);
  resizeDebounceTimer = setTimeout(() => {
    const currentWidth = $(this).width();
    const $grid = $("#yourGridId");
    const currentShrinkVal = $grid.jqGrid("getGridParam", "shrinkToFit");

    // 320px < 宽度 < 768px:设置shrinkToFit为false
    if (currentWidth > 320 && currentWidth < 768) {
      if (currentShrinkVal) {
        $grid.jqGrid("setGridParam", { shrinkToFit: false }).trigger("reloadGrid");
      }
    } 
    // 宽度 >=769px:设置shrinkToFit为true
    else if (currentWidth >= 769) {
      if (!currentShrinkVal) {
        $grid.jqGrid("setGridParam", { shrinkToFit: true }).trigger("reloadGrid");
      }
    }
  }, 200); // 防抖延迟可根据需求调整
});

关键说明

  • 判断当前shrinkToFit的现有值再修改,是为了避免重复调用reloadGrid,减少不必要的性能消耗;
  • 防抖定时器能有效降低窗口 resize 时的触发频率,避免短时间内多次刷新表格;
  • 记得把代码中的#yourGridId替换成你实际的jqGrid容器ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:45:35