jQuery Mobile 1.4嵌套弹出窗口

时间:2014-02-10 14:09:33

标签: jquery jquery-mobile

使用JQM 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 个答案:

答案 0 :(得分: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);
    };
});