jQuery在ajaxStart事件上的模态对话框

4
我将尝试使用jQuery UI模态对话框作为通过ajaxStart、ajaxStop/ajaxComplete事件的加载指示器。当页面触发时,一个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,我尝试更改ajaxStop处理程序来使用$("#modalwindow").close()$("#modalwindow").destroy()等。(#modalwindow在此处被引用以明确上下文)。
我还尝试使用标准的$("#modalwindow").dialog({}).ajaxStart(...
我应该将事件绑定到不同的对象上吗?或者从$.ajax()完成事件内部调用它们?
值得一提的是,我正在最新的IE8、FF 3.6和Chrome上进行测试。所有浏览器都有相同/类似的效果。
2个回答

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

这就是问题所在,页面上没有其他操作了。我尝试过交替使用ajaxStop/ajaxComplete以及各种组合,但都没有成功。我已经编辑了我的问题,包括浏览器在内。 - bdl
你的 $.ajax 回调函数被调用了吗? - kevingessner
是的,所有数据都会立即被检索、解析并插入到DOM中。 - bdl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接