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

index.php中定义的things变量在change.php修改DOM后失效如何解决

问题原因

你最初定义的var things = $('#box li')是jQuery执行选择器查询瞬间的静态DOM元素集合,本身不具备自动同步DOM变更的能力,所以当#box下的li元素发生增减时,该变量存储的还是旧的元素列表。

解决方案

你可以根据自己的使用场景选择以下任意一种方案:

  • 方案1:直接取消变量存储,使用时实时查询
    如果things的调用频率不高,最简单的方式就是每次需要用到#box li集合的时候,直接执行$('#box li')查询,拿到的永远是最新的DOM元素,无需处理变量更新逻辑。
  • 方案2:DOM变更后手动更新变量
    首先确保你在index.php中定义的things是全局作用域变量(不要把变量定义在闭包或者局部函数内),然后在change.php对应的DOM修改操作完成后(比如AJAX请求成功的回调函数里),重新给变量赋值即可:
    // change.php对应的JS操作修改完#box内容后执行
    things = $('#box li');
    
  • 方案3:使用原生实时DOM集合
    原生DOM的getElementsByTagName返回的是自动同步DOM变化的实时HTMLCollection,你可以按如下方式定义变量,后续使用时直接转成jQuery对象即可,无需手动更新:
    // index.php中定义
    const things = document.getElementById('box').getElementsByTagName('li');
    
    // 需要使用jQuery方法时转换即可,永远是最新的li集合
    $(things).each(function() {
      // 你的业务逻辑
    })
    

可搜索的关键词

你可以用以下关键词搜索同类问题:jQuery静态集合更新、动态DOM修改后jQuery对象失效、实时DOM选择器

内容的提问来源于stack exchange,提问作者Jack the man

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:54:04