我正在建立一个网站,并在我的项目中使用 Twitter Bootstrap modal.js。和往常一样,IE 造成了一些麻烦。
我有几个按钮,当单击每个按钮时,它们会通过 ajax 获取不同的表单,用表单填充模式,然后将其显示出来。由于它们是动态获取的,因此我需要在获取模式后使用其他脚本(例如 jQuery UI datepicker)更新一些字段。ajax 调用后立即不起作用,所以我需要使用模态事件。
这适用于铬:
$('#myModal').modal().on('shown', function() {
$('#id_date').datepicker();
});
但是,IE 做了一些奇怪的事情。为了让它工作,我必须将侦听器绑定到“显示”事件(“显示”不起作用)和文档而不是模式。
在 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 不会运行 datepicker 并选择紧随其后的代码。为什么一个简单的警报会产生如此大的影响?