2011-09-05 101 views
0

我正尝试创建一些使用AJAX和jQuery UI对话框小部件动态加载其内容的模式窗口。这个想法是,当用户请求某些内容时,对话框将只存在于页面上,然后当用户单击关闭按钮时再次被删除。然而,用我现在的代码,我有两个问题:1)对话框存在于被请求之前,我可以告诉2)当用户关闭模式,它不能再次打开,除非他们刷新页面.. 。用于Ajax模式窗口的jQuery UI对话框

我在我的应用程序下面的代码:

$('.ajax').live('click', function() 
     { 
      var url = this.href; 
      var dialog = $("#dialog"); 
      if ($("#dialog").length == 0) 
      { 
       dialog = $('<div id="dialog"></div>').appendTo('body'); 
      } 
      dialog.load(
        url, 
        {}, 
        function(responseText, textStatus, XMLHttpRequest) 
        { 
         dialog.dialog(); 
        } 
       ); 
      return false; 
     }); 

任何帮助将非常感激。由于

+0

您能不能给我们使用,除去在接近事件的对话框的代码?因为使用您提供的代码,一切正常,可以免除关闭事件后对话框依然存在。 –

+0

关闭功能内置于jQuery UI代码中。那么,如果对话框仍然存在,那么点击链接时不RESOPOW模式的原因是什么? – Cameron

+0

就像我说的,你的代码似乎可以在我自己的项目和jsFiddler上正常工作:[demo](http://jsfiddle.net/jRPfu)。也许你的网页上有其他代码会导致冲突。请告诉我你对jsFiddler有什么结果。 –

回答

2

下面是你需要或有测试代码:demo

$('.ajax').live('click', function() 
{ 
    var url = "/home/test"; 
    var dialog = $("#dialog"); 
    if ($("#dialog").length == 0) 
    { 
     dialog = $('<div id="dialog"></div>').appendTo('body'); 
    } 
    $.ajax(
     { 
      url: url, 
      beforeSend: function (jqXHR, settings) 
      { 
       //show an animated gif 
      }, 
      complete: function (jqXHR, textStatus) 
      { 
       //hide the animated gif 
      }, 
      success: function (data, textStatus, jqXHR) 
      { 
       dialog.dialog().html(data); 
      }, 
      error: function (jqXHR, textStatus, errorThrown) 
      { 
       dialog.dialog().html("An error occured..."); 
      } 
     }); 

    return false; 
});