我正在構建一個網站,並使用Twitter Bootstrap modal.js作爲我的項目的一部分。和往常一樣,IE導致一些麻煩。IE討厭我的模態窗口事件
我有幾個按鈕,點擊時每個按鈕都會通過ajax獲取不同的表單,然後用表單填充模式,然後顯示出來。由於它們是動態獲取的,我需要在獲取模式之後使用其他腳本更新一些字段(例如,jQuery UI日期選擇器)。緊接在ajax調用不起作用之後,我需要使用模態事件。
這適用於Chrome:
$('#myModal').modal().on('shown', function() {
$('#id_date').datepicker();
});
然而,IE確實很奇怪。對於它的工作,我不得不將監聽器綁定到'show'事件('顯示'不起作用)和文檔而不是模式。
裏面一個的document.ready:
$(document).on('show', function() {
$('#id_date').datepicker();
});
點擊一個按鈕後:
$('#myModal').modal('show');
但是,這就是意料之外 - 這不工作,要麼除非我添加alert('hello');
的.datepicker()
以上。爲什麼警報會改變什麼?我不知道,但隨後也會疊加 - 每次單擊其中一個按鈕時,您將收到更多警報,即第一次警報,第二次警報等等。
我使用引導2.2和IE8(標準模式,還有一個元素,以確保頁面呈現爲IE8而不是舊版本)。我不知道這裏有什麼問題,請幫忙!
更新
所以我把範圍縮小一點。這與「展示」或「展示」事件或其綁定內容無關。這是一個很多怪物。這是我落得這樣做:
$('#myModal').on('shown', function() {
if (navigator.appName == 'Microsoft Internet Explorer') {
alert('Hey! you should really use Chrome!');
}
$('#id_date').datepicker();
$('#id_tags').chosen();
});
$('#button1').on('click', function() {
$('#myModal').modal();
});
沒有警報消息,IE不運行自帶隨即的日期選擇器和選擇代碼。 爲什麼簡單的警報會產生這樣的影響?
你使用的是什麼jQuery版本? –
版本1.9.1 ... – yuvi
說實話,我認爲這是一個競爭條件,嘗試添加一個延遲,看看它是否有幫助,如果有的話,用適當的回調鏈接事件 –