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隐藏只触发一次[重复]的主要内容,如果未能解决你的问题,请参考以下文章
怎样使js中的onclick事件只触发一次,就是我点击了一次,再次点击的时候不让其再触发
为啥 Chrome 的 img 元素的 onerror 事件只触发一次?