2014-02-26 57 views
0

JQM AJAX導航在使用頁內對話框導航到頁面時無法正常工作?jQuery Mobile AJAX導航到具有對話框的頁面

page1.aspx這個:

<div data-role="page"> 
    <div data-role="header">Page 1</div> 
    <div data-role="content"> 
    <a href='page2.aspx'>Click here</a> 
    </div> 
</div>​ 

page2.aspx:

<div data-role="page"> 
    <div data-role="header">Page 2</div> 
    <div data-role="content"> 
    <a href='#popup' data-rel="dialog">Popup</a> 
    </div> 
</div>​ 

<div data-role="dialog" id='popup'> <!-- This is not loaded on AJAX navigation --> 
    <div data-role="header">Page 2 Popup</div> 
    <div data-role="content"> 
    Popup content 
    </div> 
</div>​ 

當你點擊從第1頁的鏈接,它不會加載頁面的<div data-role='dialog'> 2.

你如何解決這個問題?

+0

JQM首先在file.asp中加載'data-role = page',忽略其他所有內容。每個頁面/對話框應該在一個單獨的文件中。對話框被視爲頁面。改爲使用彈出窗口。 – Omar

+0

我試過'data-role = popup'。它沒有區別,它也沒有加載。有沒有辦法在第二頁有一個彈出窗口? – Aximili

+0

彈出窗口應該在頁面div內。 – Omar

回答

0

有一個workaround here。我修改了一點:

$(document).bind('pagecontainerload', function (event, ui) { 
    // Find all dialogs in the DOM 
    var response = ui.xhr.responseText; 
    var data = $(response).find("div[data-role='dialog'],div[data-role='popup']"); 

    for (var i = 0; i < data.length; i++) { 
    var node = data.eq(i); 

    if (node.attr('id') && document.getElementById(node.attr('id'))) 
     $('#' + node.attr('id')).remove(); // Delete existing one 

    node.addClass('cache').appendTo('#form1'); // or appendTo('body') 
    } 
}); 

我加入了類cache進行清理的目的。