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

使用jQuery load方法后.item点击事件失效,请求技术支援

问题分析与解决方案

嘿,这个问题我之前开发时也踩过坑!问题出在你用load()方法刷新#demo区域的逻辑上:

你一开始给.item绑定的点击事件,是直接绑定在页面初始加载时就存在的.item元素上的。但当你点击Refresh按钮后,$("#demo").load(...)会把#demo里的内容完全替换成新加载的DOM元素——这些新的.item并没有被绑定点击事件,所以自然就失效了。

给你两个靠谱的解决办法:

方法1:使用事件委托(推荐)

事件委托是把事件绑定在一个不会被替换的父元素上(比如document或者#demo本身),利用事件冒泡机制来触发回调。不管是初始的还是后来动态加载的.item,都能被监听到。

修改后的代码如下:

<button id="button" type="submit">Refresh</button>
<div id="demo">
  <div class="item"> item 1 </div>
  <div class="item"> item 2 </div>
  <div class="item"> item 3 </div>
</div>
<script src="jquery.min.js"></script>
<script>
$(document).ready(function() {
  $("#button").click(function() {
    $("#demo").load(location.href + " #demo");
    return false;
  });

  // 用事件委托绑定点击事件
  $(document).on('click', '.item', function() {
    $(this).css("background", "red");
  });
});
</script>

方法2:在load回调中重新绑定事件

如果你不想用事件委托,也可以在load()方法完成后,重新给新加载的.item绑定点击事件:

<button id="button" type="submit">Refresh</button>
<div id="demo">
  <div class="item"> item 1 </div>
  <div class="item"> item 2 </div>
  <div class="item"> item 3 </div>
</div>
<script src="jquery.min.js"></script>
<script>
$(document).ready(function() {
  // 把绑定逻辑抽成函数,方便复用
  function bindItemClick() {
    $(".item").click(function() {
      $(this).css("background", "red");
    });
  }

  // 初始加载时绑定
  bindItemClick();

  $("#button").click(function() {
    $("#demo").load(location.href + " #demo", function() {
      // load完成后,重新绑定事件
      bindItemClick();
    });
    return false;
  });
});
</script>

两种方法里更推荐第一种事件委托,因为它不需要每次加载都重新绑定,代码更简洁高效,也能避免重复绑定的潜在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:56:28