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

jQuery开发日历组件重新渲染后click事件失效,如何一次绑定永久生效

问题原因

你当前是直接给.days容器下的子div绑定点击事件,每次执行renderCalendar()时都会调用$('.days').empty()清空所有子元素,后续新生成的日期元素不会自动继承之前绑定的事件,因此点击事件失效。

解决方案

使用jQuery的事件委托特性,将事件绑定到始终不会被销毁的父容器.days上,仅需绑定一次即可作用于所有后续动态生成的子日期元素,无需每次渲染日历都重复绑定。

具体修改方式:将原有的点击事件绑定代码替换为委托写法即可,原有逻辑完全不需要改动:
原代码:

$('.days div').click(element => {
    // 原有逻辑保持不变
});

修改后:

$('.days').on('click', 'div', element => {
    // 原有逻辑保持不变
});

事件委托依靠浏览器的事件冒泡机制实现,点击子日期元素时事件会向上冒泡到.days容器,jQuery会自动判断事件触发源是否匹配div选择器,匹配就执行回调逻辑,因此所有动态新增的日期元素都能正常触发点击事件。

内容的提问来源于stack exchange,提问作者Felipe K. Bernardino

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:15:02