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

jQuery UI datepicker是否存在.on('hidden')事件?如何监听其隐藏完成状态?

解决方案

jQuery UI Datepicker 内置了对应的原生事件支持你的需求,无需覆写内置方法,也不需要依赖性能较差的DOM变更监听、定时器方案。
你需要用到两个初始化配置项:

  • beforeShow:日历面板显示前触发,对应隐藏红方块的逻辑
  • onClose:日历面板完全关闭(隐藏动画执行结束后)触发,对应重新显示红方块的逻辑,就是你要的类似Bootstrap bs.hidden的效果。

修改后的代码

你只需要调整datepicker的初始化配置,删除原有的DOMSubtreeModified监听逻辑即可:

var dateToday = new Date();
var dates = $("#from, #to").datepicker({
    defaultDate: "+1w",
    changeMonth: true,
    numberOfMonths: 1,
    minDate: dateToday,
    // 日历显示前隐藏红方块
    beforeShow: function() {
        $("#redSquare").addClass("none");
    },
    // 日历完全关闭后显示红方块
    onClose: function() {
        $("#redSquare").removeClass("none");
    }
});

补充说明

jQuery UI Datepicker的回调事件都是通过初始化配置项传入的,没有采用Bootstrap那种自定义事件通过on()绑定的机制,所以你之前查找.on('hidden')相关的用法会找不到对应文档。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:24:05