我正在为一些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%。
我非常感谢任何人愿意提供的任何帮助!
谢谢,
安迪
答案 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');