【问题标题】:jQuery IE7 Modal wierdnessjQuery IE7 模态怪异
【发布时间】:2011-10-07 05:03:22
【问题描述】:
我有 2 个通过按钮点击触发的模式窗口。它们在除 IE7 之外的所有浏览器中都能正常工作(未在此测试过)
我只能在演示中演示基本功能,但这里可以。第一个模式对话框工作正常,如果您单击“从服务器加载数据”它应该关闭。第二种模式根本不起作用。在演示中,当您单击“从服务器加载数据”时,它什么也不做。 (在我的本地副本上单击它会删除模态背景 div,wtf?)
真正的曲线球出现在您首先打开第二个模态对话框窗口时。然后两种模式都可以正常工作。这真的让我着迷(该死的 IE7)
我正在使用 .live 来点击模态窗口中的表格行。我需要保持这种状态,以便将数据正确发送到表单。
小提琴在这里:http://jsfiddle.net/clintongreen/5DJxv/10/
【问题讨论】:
标签:
jquery
internet-explorer
modal-dialog
【解决方案1】:
以下代码在 IE7 中不起作用:
$('#find_address_postal').click (function () {
$('.modal_form_postal').dialog('open');
$('table#table-data').attr( 'id', 'table-data_postal' );
$('table#table-data_pobox').attr( 'id', 'table-data_postal' );
$('td.address_street').removeClass("address_street").addClass("address_street_postal");
$('td.address_suburb').removeClass("address_suburb").addClass("address_suburb_postal");
$('td.address_city').removeClass("address_city").addClass("address_city_postal");
$('td.address_code').removeClass("address_code").addClass("address_code_postal");
$('td.address_street_pobox').removeClass("address_street_pobox").addClass("address_street_postal");
$('td.address_suburb_pobox').removeClass("address_suburb_pobox").addClass("address_suburb_postal");
$('td.address_city_pobox').removeClass("address_city_pobox").addClass("address_city_postal");
$('td.address_code_pobox').removeClass("address_city_pobox").addClass("address_code_postal");
$('label#suburb_search').css('display','none');
$('label#street_search').css('display','inline');
$('input#street_description').css('width','330px');
}); //end click handler
$('#find_address').click (function () {
$('.modal_form').dialog('open');
$('table#table-data_postal').attr( 'id', 'table-data' );
$('table#table-data_pobox').attr( 'id', 'table-data' );
$('td.address_street_postal').removeClass("address_street_postal").addClass("address_street");
$('td.address_suburb_postal').removeClass("address_suburb_postal").addClass("address_suburb");
$('td.address_city_postal').removeClass("address_city_postal").addClass("address_city");
$('td.address_code_postal').removeClass("address_city_postal").addClass("address_code");
$('td.address_street_pobox').removeClass("address_street_pobox").addClass("address_street");
$('td.address_suburb_pobox').removeClass("address_suburb_pobox").addClass("address_suburb");
$('td.address_city_pobox').removeClass("address_city_pobox").addClass("address_city");
$('td.address_code_pobox').removeClass("address_city_pobox").addClass("address_code");
$('label#suburb_search').css('display','none');
$('label#street_search').css('display','inline');
$('input#street_description').css('width','330px');
}); //end click handler
这以前在所有浏览器中都有效,但是当我们实现 DataTables.js 时,我的代码不再对两个表都使用 1 个模式对话框。所以我创建了 2 个模态对话框,一旦完成,上面的代码似乎只在 IE7 中冲突(以及 prob 6 也是)。无论如何,在咬牙切齿之后,我将上面的代码减少到下面,现在一切正常:)
$('#find_address_postal').click (function () {
$('.modal_form_postal').dialog('open');
}); //end click handler
$('#find_address').click (function () {
$('.modal_form').dialog('open');
}); //end click handler