jQuery隐藏只触发一次

jQuery hide only fires once

本文关键字:一次 隐藏 jQuery      更新时间:2023-09-26

我有一个日历在选择日期时不关闭。因此,我针对一个类(.day)在单击时关闭日历。但是,当我重新打开日历并选择一个新日期时,它不会第二次关闭。我在这里寻找答案,尽管标题和问题相似,但代码并不完全相同。。。

$('.day').click(function () {
  $(".datepicker").hide();
});
<span class="input-append date dp-ticket" data-date="today" data-date-format="dd-mm-yyyy">
  <input type="text" class="add-on form-control col-xs-10 col-sm-10 col-md-10 col-lg-10" placeholder="Or, choose any date" name="startdate" id="startdate">
  <button class="add-on btn btn-search col-xs-2 col-sm-2 col-md-2 col-lg-2" type="button">
    <span class="icon-calendar"></span>
  </button>
</span>

尝试在.上使用

$('.day').on('click', function () {
  $(".datepicker").hide();
});

很抱歉,除了在jQuery中,我在代码示例中没有看到.day或.datepicker。也许我错过了什么。。。。lol

我的猜测是,脚本注册了原始的隐藏事件,但没有注册。当你尝试更改日期时,日期选择器会再次显示,只要脚本知道,当你更改日期时它仍然是隐藏的。

您可以尝试放置.change()来检测日期字段值的变化(或放置日期数据的任何位置)

$(".foo").val().change(function() {
  $(".datepicker").hide();
});

您可能需要设置一个默认值,但每次更改它时,它都会运行函数来隐藏.datepicker.

我不确定.day是如何实现的,因为您没有在代码中显示它,但因为它只触发一次,所以我认为您正在动态地将.day添加到DOM中。

如果是这样的话,你可以这样做:

$('SELECTOR_OF_PARENT').on('click', '.day', function(){
    $(".datepicker").hide();
});

你也可以这样做

$(document).on('click', '.day', function(){
    $(".datepicker").hide();
});

以下是.on() 的更多信息