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

使用jQuery根据窗口宽度增删DOM元素时append失效如何解决

问题核心

你代码的问题出在元素被detach()移出DOM后,后续resize事件中用选择器无法再获取到这部分元素的引用,所以append操作没有生效。

修正方案

把三个元素的引用提前在resize事件外缓存,初始页面加载时元素还在DOM中,此时获取的引用会一直保留,即使元素被detach也不会丢失,后续可以直接用该引用执行append操作。

修正后的代码如下:

// 提前缓存元素引用,不要在resize回调里每次查询DOM
var three = $('#three');
var four = $('#four');
var five = $('#five');
var wrapper = $('.grid-wrapper');

$(window).on("resize", function () {
  var winWidth = $(window).width();
  if(winWidth < 769) {
    five.detach();
    four.detach();
    wrapper.append(three);
  }
  else if(winWidth > 2018) {
    three.detach();
    four.detach();
    wrapper.append(five);
  }
  else {
    three.detach();
    five.detach();
    wrapper.append(four);
  }
}).resize();

可选优化

resize事件触发频率极高,建议添加防抖逻辑,避免频繁操作DOM;同时可以增加变量记录当前展示的元素,只有当需要切换显示元素时才执行DOM操作,减少不必要的性能消耗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:15:07