0

页面加载时需要打开一个 jquery-ui 对话框。相关代码在两个文件中。

**FileA**
$(function()
{
   //some initialization code here

    $("#date-range-dialog").dialog({
        modal: true, 
        autoOpen: false, 
        buttons: 
        {
            "Ok": function() 
            {
               //some code here
            }
        }
    });
});

**FileB**
$(function()
{
   //some code

   $('#date-range-dialog').dialog('open');
});

这适用于 Chrome 和 Firefox。但是对于 IE9,打开的对话框事件/语句会导致浏览器将显示切换到兼容性视图。

对话框的标记是:

<div id="date-range-dialog" title="Date Range">
    <div class="form-horizontal">
        <div class="control-group">
            <label class="control-label">From</label>
            <div class="controls">
                <input type="text" id="dt-from" class="input-small" />
            </div>
        </div>
        <div class="control-group">
            <label class="control-label">To</label>
            <div class="controls">
                <input type="text" id="dt-to" class="input-small" />
            </div>
        </div>
    </div>
</div>

该应用程序使用 Twitter Bootstrap 2.0.4、jQuery 1.8.3、jQuery UI 1.9.2。目前没有手动 CSS。

一个奇怪的观察是,如果打开对话框的语句被注释掉,它在 IE9 中也可以工作。如果有调用此语句的按钮,则一切正常:

$(".date-range").click(function()
{
    $("#date-range-dialog").dialog("open");
});

因此,只有在尝试直接在其中打开对话框时才会出现问题$(function(){});

我也尝试在$(window).load()事件中放置对话框打开语句。它在 IE9 中仍然失败。

4

1 回答 1

0

您是否尝试将文件 B 中的 jQuery 放入$(document).ready({});子句中?我猜想,也许 IE 在文件 A 中完成初始化之前正在运行文件 B 中的代码。这可以解释为什么它在你的 click 函数中起作用,但在你的文件 B 函数中不起作用。

于 2013-01-02T09:19:31.050 回答