2014-02-10 74 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