jQuery隐藏只触发一次[重复]

Posted

技术标签:

【中文标题】jQuery隐藏只触发一次[重复]【英文标题】:jQuery hide only fires once [duplicate] 【发布时间】:2014-01-01 10:36:00 【问题描述】:

我有一个没有在日期选择时关闭的日历。所以我有一个目标类(.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它在哪里。? 你能做一个小提琴吗? .day 是否被动态添加到 DOM 中? 我猜 .day 元素是由插件生成的,所以对于新元素你应该使用委托,例如:$(document.body).on('click', '.day', function () $(".datepicker").hide(); ); 请给我们更多细节。 【参考方案1】:

尝试使用 on。

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

【讨论】:

几乎一样。这两个函数都会给出相同的输出。【参考方案2】:

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

我的猜测是脚本注册了原始的隐藏事件,但没有注册 .datepicker 在您尝试更改日期时再次显示,因此据脚本所知,当您更改日期时它仍然处于隐藏状态。

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

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

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

【讨论】:

【参考方案3】:

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

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

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

你也可以这样做

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

这里是.on()的更多信息

【讨论】:

以上是关于jQuery隐藏只触发一次[重复]的主要内容,如果未能解决你的问题,请参考以下文章

jquery hover事件只触发一次动画

怎样使js中的onclick事件只触发一次,就是我点击了一次,再次点击的时候不让其再触发

jquery hover事件只触发一次动画

为啥 Chrome 的 img 元素的 onerror 事件只触发一次?

Fullcalendar dayClick 代码只触发一次:我做错了啥?

我的移动菜单 Jquery 脚本只运行一次