2014-02-10 112 views
1

使用JQM 1.4,我不再可以從另一個彈出窗口打開新的彈出窗口。jQuery Mobile 1.4嵌套彈出窗口

<a href="#popupBasic" data-rel="popup" 
class="ui-btn ui-corner-all ui-shadow ui-btn-inline" 
data-transition="pop">Basic Popup</a> 

<div data-role="popup" id="popupBasic"> 
    <p>This is a completely basic popup, no options set.</p> 
    <a href="#popupBasicAnother" data-rel="popup" class="ui-btn ui-corner-all ui-shadow ui-btn-inline" data-transition="pop">Another Popup</a> 
</div> 

<div data-role="popup" id="popupBasicAnother"> 
    <p>Another Popup</p> 
</div> 

這在1.3版本中工作正常。 任何想法如何解決這個問題?

回答

1

這來自處理鏈接在彈出窗口小部件內部點擊的方式的改變。在jQuery Mobile 1.3中,當前活動的彈出窗口被強制關閉,因此可以打開新窗口。 jQuery Mobile 1.4中不再是這種情況。

要恢復以前的行爲,你可以在一個mobileinit處理程序補丁$.mobile.popup.handleLink()

$(document).on("mobileinit", function() { 
    var originalHandleLink = $.mobile.popup.handleLink; 
    $.mobile.popup.handleLink = function(link) { 
     var activePopup = $.mobile.popup.active, 
      path = $.mobile.path; 
     if (activePopup) { 
      var popup = $(path.hashToSelector(
       path.parseUrl(link.attr("href")).hash)).first(); 
      if (popup.length > 0 && popup.data("mobile-popup")) { 
       activePopup._close(true); 
      } 
     } 
     originalHandleLink.apply(this, arguments); 
    }; 
}); 
+0

感謝您的快速反應,我會試試看,但我認爲JQM團隊需要確保他們不這樣做在升級中破壞事物。這使得升級由以前版本構建的數千個應用程序變得非常具有挑戰性。 – sam360

+0

演示:http://jsfiddle.net/Palestinian/ZeD5K/ – Omar