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

使用AJAX load()加载动态内容后,点击事件无法触发的问题

问题分析

你遇到的问题是动态加载元素的事件绑定失效。页面初始化时,#divA并不存在于DOM中,你用$("#divA").click()绑定的事件只能作用于页面加载完成时已存在的元素,后续通过AJAX加载的#divA不会自动带上这个事件绑定。

修复方案

改用jQuery的事件委托机制,通过on()方法把事件绑定到一个始终存在的父元素(比如#div1)上,监听动态元素的点击事件。修改后的index.php代码如下:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $("#div2").click(function(){
    $("#div1").load("load.php #divA");
  });
  // 事件委托:绑定到父元素#div1,监听内部#divA的点击事件
  $("#div1").on("click", "#divA", function(){
    $(this).load("load.php #divB");
  });
});
</script>
<div id='div1'>
    <div id='div2'>click</div>
</div>
原理说明

事件委托依赖DOM的事件冒泡特性:当点击动态生成的#divA时,事件会向上冒泡到它的父元素#div1。#div1作为页面初始化时就存在的元素,会监听到这个冒泡事件,然后判断触发事件的目标是不是#divA,如果是就执行对应的回调逻辑。这样不管#divA什么时候被添加到页面中,只要它在#div1内部,点击事件就能被正确触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:15:04