2011-05-19 68 views
0

,我有以下的jQuery UI代碼:jQuery的AJAX對話框

  $('#lang-dialog').dialog({ 
       modal: true, 
       draggable: false, 
       resizable: false, 
       autoOpen: false 
      }); 


      $('a#lang').click(function(event) 
      { 
       event.preventDefault(); $('#lang-dialog').dialog('open'); 
      }); 

這樣的鏈接,而不是裝載做它使用的HyperTransfer的對話框。

但他們是在頁面上沒有#lang-dialog的,而不是我想它使用jQuery創建並使用AJAX的內容加載,以便例如:$('#lang-dialog').load('/elements/dialogs/language.ctp');

誰能幫助?由於

+1

只需在頁面中添加'

'。這裏有什麼問題? – Fosco 2011-05-19 18:56:06

+0

不要在頁面上有空標記,div也需要動態加載內容。 – Cameron 2011-05-19 18:59:29

+1

這是一個非常糟糕的原因,恕我直言。您只會在用戶點擊後創建並加載它,以減慢體驗。 Rob通過動態創建提供了一個答案,儘管... – Fosco 2011-05-19 19:02:29

回答

1

由於Fosco提到,你叫.dialog()前補充一點:

$('body').append('<div id="lang-dialog"></div>'); 

如果它是一個可以被調用不止一次方法:

// prevent multiple div's from being added... 
if(!$('#lang-dialog').length){ 
    $('body').append('<div id="lang-dialog"></div>'); 
} 
0

你想要做自己的Ajax邏輯代替使用​​:

$.get(url, function(html) { 
    $('some-parent-element').append('<div id="lang-dialog"></div>'); 
    $('#lang-dialog').html(html).dialog({ 
    ... 
    }); 
}); 
0

嘗試如下所示,即時創建html元素。

var $dialog = $('<div id="dialog" title=""></div>').dialog({ 
     autoOpen: false, 
     modal: true 
    });