2010-10-01 68 views
44

加載模態對話框的內容目前我的模態對話框是這樣jQuery的:通過Ajax

<html> 
<head> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js"></script> 
    <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/humanity/jquery-ui.css" type="text/css" /> 
</head> 
<body> 
    <div id="dialog" title="Title Box"> 
    <p>Stuff here</p> 
    </div> 
    <script type="text/javascript"> 
    jQuery(
    function() { 
    jQuery("#dialog") 
     .dialog(
     { 
     bgiframe: true, 
     autoOpen: false, 
     height: 100, 
     modal: true 
     } 
    ); 
    jQuery('body') 
     .bind(
     'click', 
     function(e){ 
     if(
     jQuery('#dialog').dialog('isOpen') 
     && !jQuery(e.target).is('.ui-dialog, a') 
     && !jQuery(e.target).closest('.ui-dialog').length 
     ){ 
     jQuery('#dialog').dialog('close'); 
     } 
     } 
    ); 
    } 
    ); 
    </script> 
    <a href="#" onclick="jQuery('#dialog').dialog('open'); return false">Click to view</a> 
</body> 
</html> 

被載入包括在同一頁股利。如何在顯示對話框時將該div移動到第二頁並通過Ajax加載內容?我可以重複使用腳本來根據需要加載不同的內容嗎?

回答

71

看看Nemikor的這篇博文,應該做你想做的。

http://blog.nemikor.com/2009/04/18/loading-a-page-into-a-dialog/

基本上,叫「開」,你「負荷」與其他第一頁內容之前。

jQuery('#dialog').load('path to my page').dialog('open'); 
+16

雖然這個作品就會打開對話框立即而不是等待加載完成。最好使用回調函數,如:$('#dialog')。load('path-to-my-page',function(){$('#dialog')。dialog('open'); });' – billynoah 2014-12-15 17:48:52

14

嘗試使用這一個。

$(document).ready(function(){ 
$.ajax({ 
    url: "yourPageWhereToLoadData.php", 
    success: function(data){ 
     $("#dialog").html(data); 
    } 
}); 

$("#dialog").dialog(
     { 
     bgiframe: true, 
     autoOpen: false, 
     height: 100, 
     modal: true 
     } 
); 
}); 
4
var dialogName = '#dialog_XYZ'; 
$.ajax({ 
     url: "/ajax_pages/my_page.ext", 
     data: {....}, 
     success: function(data) { 
      $(dialogName).remove(); 

      $('BODY').append(data); 

      $(dialogName) 
      .dialog(options.dialogOptions); 
     } 
}); 

的Ajax的請求負載的對話框中,將它們添加到當前頁面的主體,打開對話框。

如果只whant加載內容,你可以這樣做:

var dialogName = '#dialog_XYZ'; 
$.ajax({ 
      url: "/ajax_pages/my_page.ext", 
      data: {....}, 
      success: function(data) { 
       $(dialogName).append(data); 

       $(dialogName) 
       .dialog(options.dialogOptions); 
      } 
}); 
0
<button class="btn" onClick="openDialog('New Type','Sample.html')">Middle</button> 

<script type="text/javascript"> 
    function openDialog(title,url) { 
     $('.opened-dialogs').dialog("close"); 

     $('<div class="opened-dialogs">').html('loading...').dialog({ 
      position: ['center',20], 
      open: function() { 
       $(this).load(url); 

      }, 
      close: function(event, ui) { 
        $(this).remove(); 
      }, 

      title: title, 
      minWidth: 600    
     }); 

     return false; 
    } 
</script> 
0

可能是這段代碼可以給你一些想法。

http://blog.nemikor.com/2009/04/18/loading-a-page-into-a-dialog/

$(document).ready(function() { 
    $('#page-help').each(function() { 
     var $link = $(this); 
     var $dialog = $('<div></div>') 
      .load($link.attr('href')) 
      .dialog({ 
       autoOpen: false, 
       title: $link.attr('title'), 
       width: 500, 
       height: 300 
      }); 

     $link.click(function() { 
      $dialog.dialog('open'); 

      return false; 
     }); 
    }); 
});