我遇到了IE問題。在我的應用程序中,我有一個用戶可以顯示的對話框。該對話框使用來自AJAX調用的數據構建。然後,我爲該按鈕註冊一次事件處理程序。在FF,Chrome和Safari中,我沒有任何問題。對話框顯示並且按鈕起作用。這已經工作了很長時間。jQuery事件處理程序有時在IE中沒有觸發
在IE中,對話框顯示,但有時事件處理程序不會觸發。點擊按鈕不起作用。這並不總是發生。到目前爲止,這似乎發生在您打開IE後首次查看該頁面。關閉對話框並重新打開有時會修復它。重新加載頁面有時會修復它。一旦修復,無論頁面重新加載,似乎都不會再次失敗。必須退出IE才能使問題重新出現。我無法使用開發人員工具,因爲開發人員工具處於打開狀態時問題會消失。
$('#btn_school_choices').button('loading');
$.ajax({
type: 'GET',
url: 'ajax/optimized_colleges.php',
dataType: 'json',
success: function(data, status, xhr) {
// Some code to prepare the data returned
// Build the dialog using the data and add to DOM
$('#modal_opt_in').html(ich.dialog_optimize_college_selection(optinData));
$('#btn_school_choices').button('reset');
// Add Event Handler to Button in Dialog
$('#btn_add_colleges').one('click', function() { ... }
// Show the Dialog
$('#modal_opt_in').modal({backdrop: 'static', show: true});
error: function(xhr) { ... }
});
我嘗試過使用on()和off()並且發生同樣的問題。在這一點上,我一直試圖解決這個問題大約兩個星期。任何幫助,將不勝感激。
該按鈕應該在註冊事件處理程序時存在,因爲它被添加到前兩行的DOM中。 (即使事件處理程序失敗,對話框也會顯示按鈕,所以在註冊事件處理程序之前的兩行和事件處理程序之後的行之間。
請嘗試將button.one()綁定到ajax調用之前的某個地方,並請發佈整個代碼 – Xerxes 2013-04-28 06:57:36
什麼版本的IE?你可以發佈你的標記嗎? – albert 2013-04-28 07:00:14
我的猜測是,你正試圖在ajax調用完成之前設置事件處理程序,因此對象不在DOM中。但是,您還沒有向我們展示足夠的代碼以確定知道。 – jfriend00 2013-04-28 08:03:21