2013-12-13 83 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()