如果jQuery Mobile弹出窗口打开,如何通过jQuery检查?

时间:2014-04-08 03:10:52

标签: jquery jquery-mobile popup

我可以激活以下jQuery Mobile弹出窗口:

<div data-role="popup" id="waiting1" data-overlay-theme="a" data-corners="false" data-tolerance="30,15" data-dismissible="false">
     <div class="modalAlert" id="waitingContent">
      Waiting...
     </div> 
</div>

使用jQuery命令:

$(waiting1).popup('open');

但是我想以编程方式确认弹出窗口已打开,如果没有,则使用IF语句触发警报。我尝试使用CSS显示属性:

if ( $(waiting1).css('display') != 'block') {
    alert(
        "Error: Waiting popup should not be visible."
    );
    return( -1 );
};

...但是作为jQuery Mobile弹出窗口,显然该属性始终是“阻止”,无论它是否可见。在IF语句中检查这个的正确方法是什么?谢谢你的帮助。

4 个答案:

答案 0 :(得分:8)

在jQuery Mobile中,一个类出现时会应用于弹出窗口的容器。 ui-popup-active当它可见时ui-popup-hidden隐藏它。因此,您可以检查该类:

,而不是检查'block'':visible'
if ( $(waiting1).parent().hasClass('ui-popup-hidden')) {
    alert(
        "Error: Waiting popup should not be visible."
    );
    return( -1 );
};

答案 1 :(得分:2)

我们可以使用jQuery Mobile Popup互斥锁:

if ($.mobile.popup.active && $.mobile.popup.active.element[0] === $(waiting1)[0]) {
alert('popup is opened');
}

答案 2 :(得分:1)

假设弹出窗口具有 popupLogin

if ($.mobile.activePage.find(".popupLogin").parent().hasClass("ui-popup-active")){
     alert('popup is open');
}

请参阅此jsfiddle:http://jsfiddle.net/umerqureshi/fuy4Lz5z/

答案 3 :(得分:0)

这对我有用:

if(!$.mobile.activePage.find(popupID).is(":visible")) $(popupID).popup('close');