ajaxStart事件上的jQuery模式对话框

时间:2010-06-01 21:41:01

标签: jquery ajax jquery-ui modal-dialog

我正在尝试通过ajaxStart,ajaxStop / ajaxComplete事件将jQuery UI模式对话框用作加载指示器。当页面触发时,Ajax处理程序会加载一些数据,并且模态对话框显示正常。但是,在Ajax事件完成时,它永远不会隐藏或关闭对话框。这是返回本地服务器的一小部分代码,因此实际的Ajax事件非常快。

这是我的模态div的实际代码:

      $("#modalwindow").dialog({
              modal: true,
              height: 50,
              width: 200,
              zIndex: 999,
              resizable: false,
              title: "Please wait..."
      })
      .bind("ajaxStart", function(){ $(this).show(); })
      .bind("ajaxStop", function(){ $(this).hide(); });

Ajax事件只是一个普通的$.ajax({}) GET方法调用。

根据Google和Google的一些搜索,我尝试更改ajaxStop处理程序以使用$("#modalwindow").close()$("#modalwindow").destroy()等。(此处引用的#modalwindow是为了给出明确的上下文)。

我也尝试过使用标准$("#modalwindow").dialog({}).ajaxStart(...

我应该将事件绑定到不同的对象吗?或者在$.ajax()完整事件中调用它们?

我应该提一下,我正在测试最新的IE8,FF 3.6和Chrome。所有都具有相同/相似的效果。

2 个答案:

答案 0 :(得分:6)

找到答案:

  $("#modalwindow").dialog({
          modal: true,
          height: 50,
          width: 200,
          zIndex: 999,
          resizable: false,
          title: "Please wait..."
  })
  .bind("ajaxStart", function(){
      $(this).dialog("open"); })
  .bind("ajaxStop", function(){
      $(this).dialog("close");
  });

自我注意:RTFM

当然,在所有这一切中,现在我意识到它打开和关闭的速度很快就没用了。哦,希望有人会觉得这很有帮助。

答案 1 :(得分:1)

"Whenever an Ajax request completes, jQuery checks whether there are any other outstanding Ajax requests."您是否同时运行其他AJAX请求?您需要使用ajaxComplete.ajax()的回调选项来完成一次完成。