jQuery Dialog打开但不关闭!

时间:2010-06-23 03:13:19

标签: jquery jquery-ui jquery-dialog

我正在为一些HTML做一个Ajax GET,然后通过以下方式填充div:

$(theDiv).html(theHtml)

此HTML包含一个按钮(假设为“按钮A”),它通过以下方式显示jQuery对话框:

$(selector).dialog({modal:true});

单击“按钮A​​”时,每次都会显示该对话框。但是,在对话框中,我已经包含了一个取消链接。取消链接触发:

$(selector).dialog("close")

我注意到大多数时候它的效果非常好。但是,如果我在Ajax GET完成后立即快速单击“按钮A​​”,取消链接将不会关闭对话框!对话框右上角的“X”按钮始终有效,但“取消”按钮是我正在努力的按钮。

我尝试过很多不同的东西让这个工作无济于事。这种情况发生在Firefox 3.5.9以及IE 7中。如果我使用Firebug并在.dialog('close');语句后放置一个断点,那么我注意到屏幕上的背景颜色从灰色变为白色,但是对话框仍然开放。我甚至尝试过这样做:

$(selector).css("display", "none"); 

无济于事。

无论出于何种原因,Ajax GET第一次触发,我从来没有遇到过这个问题......所以当我第一次访问页面并执行GET时,它每次都有效。但是,如果我仍然在页面上并在DOM仍然加载时继续触发GET,那么它的工作时间可能只有50%。

我非常感谢任何人愿意提供的任何帮助!

谢谢,

安迪

2 个答案:

答案 0 :(得分:0)

在点击“取消”按钮时,看起来javascript还没有准备就绪。 您应该尝试在ajax加载页面的document.ready事件上弹出警报,如果您能够在警报到来之前单击取消按钮,则javascript只比您慢。

只需添加类似内容:

<script type="text/javascript">
$(function() {
    alert('Javascript ready');
});
</script>

答案 1 :(得分:0)

您是否尝试使用取消按钮提前创建对话框,然后使用按钮A上的打开命令:

<script>
    $(document).ready(function () {
        $(selector).dialog({
            modal: true,
            autoOpen: false,
            buttons: { 'Cancel': function () { $(this).dialog('close'); } }
        });
    });
</script>

然后点击按钮A:

$(selector).dialog('open');