2013-12-13 81 views
1

我有一个日期选择不关闭。所以我点击了一个类(.day)来关闭日历。但是,当我重新打开日历并选择新日期时,它不会再次关闭。我已经在这里寻找答案,虽然类似的标题和问题的代码是不完全一样的...jQuery隐藏只触发一次

$('.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> 
+0

我不能看到的更多信息“.day”这个类在哪里? –

+1

你可以创建一个小提琴吗? – tewathia

+1

'.day'是否被动态添加到DOM? –

回答

0

尝试使用。

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

这几乎是一样的。这两个函数都会给出相同的输出。 –

0

对不起,但我没有在代码示例中看到.day或.datepicker而不是在jQuery中。也许我错过了东西....大声笑

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

你可以尝试把一个.change()检测日期字段的值的变化(或任何你把日期数据。)

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

您可能需要设置一个默认值,但每次它已更改它将运行该功能来隐藏.datepicker。

0

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

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

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

你也可以做这样的

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

这里是.on()