当用户点击它之外时,防止JQuery Mobile关闭弹出窗口

我正在使用JQuery Mobile 1.2.0 alpha 1。

目前,当我打开一个弹出窗口并在屏幕外的任何地方点击时,弹出窗口正在关闭。 我想知道是否有任何我错过的JQuery Mobile属性可以设置并防止在外部点击关闭弹出窗口? (模态弹出窗口)

(弹出窗口的文档可以在这里找到)

编辑:

我有一个解决这个问题的想法,但仍然无法实现它:

当一个JQM弹出窗口显示一个div,它覆盖了ui-popup-screen类的所有屏幕。 我想以某种方式给它一个大的z-index并取消绑定它的所有点击/点击function。 这样做并不能解决我的问题,但我想这是朝这个方向迈出的一小步。

Thnx提前。

这已作为Github上的function请求添加。 请参阅此处的问题

在此期间,对此进行破解就是解开ui-popup屏幕上的事件。 我将以下代码放在pageinit中。

$("#yourPopupId").on({ popupbeforeposition: function () { $('.ui-popup-screen').off(); } }); 

这是一个繁重的quickfix,但它的工作原理。

对于未来的搜索者,从1.3开始,现在支持这一点。 只需将data-dismissible="false"属性添加到面板div。

在@ TheGwa的优秀解决方案的基础上,这是为即将推出的官方function做准备(可能是在1.3版本中):

  • data-dismissible='false'添加到您不希望通过点击它们之外的所有弹出窗口的标记。

  • 将以下事件处理程序添加到您的应用程序 它将处理所有弹出窗口:

_

 $(window).on('popupbeforeposition', 'div:jqmData(role="popup")', function() { var notDismissible = $(this).jqmData('dismissible') === false; if (notDismissible) { $('.ui-popup-screen').off(); } }); 

官方支持该function后,只需删除事件处理程序即可。

请注意,遗憾的是,官方文档(截至1.2)表明该function已经可用,但它不是 – 请参阅http://jquerymobile.com/test/docs/pages/popup/options.html

以下列方式添加data-dismissible =“false”。

 

@ MJB – >如果您希望能够在弹出窗口处于活动状态时单击任意位置(例如,在按钮上),则可以更改弹出窗口的CSS,如下所示:

 .ui-popup-screen{ position: relative; } 

这对我有用。

注意:当您执行此操作时,弹出窗口不会再单击关闭 – 我做了一个解决方法:

 $(window).click(function() { if ($( "#myPopup-popup" ).hasClass("ui-popup-active")){ $( "#myPopup" ).popup( "close" ); } }); 

myPopup-popup ID由JQM生成 – myPopup是我弹出的ID。