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

jQuery窗口Resize时If/Else If语句失效,求无刷新执行脚本方案

解决jQuery中Resize事件触发类媒体查询脚本的问题

首先,你的问题核心是Resize事件绑定后未正确触发脚本逻辑,且没有在页面初始化时就执行一次逻辑——这就是为什么只有刷新才生效,调整窗口时没反应的原因。下面给你一套完整的解决方案:

步骤1:封装逻辑为可复用函数

把你针对不同屏幕尺寸的处理代码抽成独立函数,这样既可以在页面加载时执行,也能在窗口resize时调用,避免代码冗余:

function handleScreenSize() {
    var windowWidth = $(window).width();
    
    // 大屏幕(>1200px)逻辑
    if (windowWidth > 1200) {
        $('.menus-area .posts .tileh4 span:first-child').each(function() {
            var words = $(this).text();
            var maxWords = 22;
            // 注意:你原来的words.len应该是words.length,这里修正一下
            if (words.length > maxWords) {
                var trimmedText = words.substring(0, maxWords) + '...';
                $(this).text(trimmedText);
            }
        });
    } 
    // 可继续添加其他屏幕尺寸的else if逻辑
    else if (windowWidth <= 1200 && windowWidth > 768) {
        // 中等屏幕的处理代码
        $('.menus-area .posts .tileh4 span:first-child').each(function() {
            // 恢复原始文本(需提前存储)
            var originalText = $(this).data('originalText') || $(this).text();
            $(this).text(originalText);
        });
    } 
    else {
        // 小屏幕的处理逻辑
        $('.menus-area .posts .tileh4 span:first-child').each(function() {
            var originalText = $(this).data('originalText') || $(this).text();
            $(this).text(originalText);
        });
    }
}

步骤2:绑定Resize事件并初始化执行

接下来,需要在页面加载完成时执行一次函数,同时绑定resize事件触发函数。另外,为了避免resize事件频繁触发导致性能问题,建议添加防抖处理:

// 防抖函数:避免resize频繁触发
function debounce(func, wait) {
    var timeout;
    return function() {
        var context = this, args = arguments;
        clearTimeout(timeout);
        timeout = setTimeout(function() {
            func.apply(context, args);
        }, wait);
    };
}

// 页面加载完成后执行初始化
$(document).ready(function() {
    // 提前存储每个元素的原始文本,方便后续恢复
    $('.menus-area .posts .tileh4 span:first-child').each(function() {
        $(this).data('originalText', $(this).text());
    });
    
    // 首次加载就应用对应尺寸的逻辑
    handleScreenSize();
    
    // 绑定防抖后的resize事件,250ms是调整停止后等待执行的时间
    $(window).resize(debounce(handleScreenSize, 250));
});

关键细节说明

  • 存储原始文本:如果在大屏幕下截断了文本,当窗口缩小到小屏幕时,必须恢复完整文本,否则文本会一直是截断后的版本,这是很多人容易忽略的点。
  • 防抖函数:窗口resize时会连续触发几十次事件,防抖可以让函数在调整停止后再执行,避免频繁操作DOM导致页面卡顿。
  • 初始化执行:页面加载时就执行一次逻辑,确保用户刚打开页面时就适配当前屏幕尺寸,不用等到手动调整窗口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:09:13