弹出窗口打开时如何传播 jQuery Mobile 事件?

Posted

技术标签:

【中文标题】弹出窗口打开时如何传播 jQuery Mobile 事件?【英文标题】:How to propagate jQuery Mobile events when a popup is open? 【发布时间】:2014-04-11 02:14:42 【问题描述】:

当弹出窗口打开时,似乎没有任何事件被传播到内容 div。

我将弹出窗口用作警报消息,我希望在用户在页面上执行其他任务时保持打开状态。

现场示例: http://jsfiddle.net/wvVmT/703/

我希望即使在弹出窗口打开后单击红色区域也会出现警报。

html

<div data-role="page">
    <div data-role="content" id="content" style="background-color:red">
        content
        <a href="#" data-role="button" data-rel="popup" id="message-button">Message</a>
        <div data-role="popup" id="message-popup" data-history="false" data-dismissible="false">popup</div>
    </div>
</div>

JS:

$(function() 
  $( '#message-button' ).click(function()
    
      $( '#message-popup' ).popup( 'open' );
    
  );
  $( '#content' ).click(function()
    
      alert('content');
    
  )
);

【问题讨论】:

jsfiddle.net/Palestinian/wvVmT/704 移除 弹出式覆盖 奥马尔是正确的。您还可以使用第三方插件,例如 jGrowl - jsfiddle.net/ezanker/wvVmT/705 完美!非常感谢,奥马尔! 【参考方案1】:

正如 Omar 所说,必须删除与弹出窗口相关的屏幕。

他建议移除所有弹出窗口的屏幕:

$('.ui-popup-screen').remove();

但实际上,在创建弹出窗口的那一刻,会创建一个具有相同 ID 后跟 -screen 的元素。因此,您可以只删除那个以保留所有其他人的屏幕。在我的例子中:

$('#message-popup-screen').remove();

并且只做一次就足够了,所以你不需要像他的例子那样每次打开弹出窗口时都这样做;)

【讨论】:

以上是关于弹出窗口打开时如何传播 jQuery Mobile 事件?的主要内容,如果未能解决你的问题,请参考以下文章

从 iPhone 主屏幕重新打开时,如何在 jQuery Mobile 应用程序上缓存并保留上次访问的页面?

如何在打开时仅在模式弹出窗口内限制 Tab 键按下?

如何从第一个弹出窗口中打开第二个 jquery-mobile 弹出窗口

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

如何在 jQuery Mobile 中等待弹出窗口关闭?

单击 jQuery Mobile 的提交按钮后,如何显示“加载”弹出窗口?