我遇到了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