jQuery Mobile 1.4 Вложенные всплывающие окна

Используя 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. Любая идея, как я могу это исправить?


person sam360    schedule 10.02.2014    source источник


Ответы (1)


Это происходит из-за изменения способа обработки ссылок, нажимаемых внутри всплывающего виджета. В jQuery Mobile 1.3 текущее активное всплывающее окно было принудительно закрыто, чтобы можно было открыть новое. Это больше не относится к jQuery Mobile 1.4.

Чтобы восстановить предыдущее поведение, вы можете исправить $.mobile.popup.handleLink() в обработчике mobileinit:

$(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);
    };
});
person Frédéric Hamidi    schedule 10.02.2014
comment
Спасибо за ваш быстрый ответ, я попробую, но я думаю, что команда JQM должна убедиться, что они не сломают вещи при обновлениях. Это делает очень сложным обновление тысяч приложений, созданных предыдущими версиями. - person sam360; 10.02.2014