2

我才刚刚开始以任何严肃的方式使用新的 jQM 1.2 弹出功能,并且遇到了许多奇怪的问题。我需要从脚本打开我的弹出窗口,而不是通过 data-rel='popup' 点击。“简单”,我想 - 只需将数据角色设置为“popup”的弹出元素放入,然后从脚本中将其打开为 element.popup('open')。我试过只是让jQM抱怨

未捕获的错误:无法在初始化之前调用弹出窗口上的方法;试图调用方法“打开”

所以我想我根本不会使用数据角色,将元素样式设置为 display:none 然后简单地做

element.popup().css('display':'block').popup('open') 从需要的脚本。这在第一次时就像一个魅力。然后,当我尝试重新打开弹出窗口时,什么也没有发生 - 没有弹出窗口!我认为这可能与两次初始化弹出窗口有关,所以我将代码更改为

if ('undefined' == typeof(element.data('ppp'))
element.popup().css('display','block').data('ppp',1);

其次是

element.popup('open')

仍然没有乐趣 - 似乎弹出窗口一旦关闭就忘记了它的数据属性

对此的任何帮助将不胜感激 - 基本上我想做的就是从脚本中多次打开和关闭弹出窗口。

4

1 回答 1

6

对此有一个非常简单的答案。尝试访问弹出元素以通过其虚拟类声明(在本例中为 ppp)定位它来打开它,将永远不会奏效。如果你想找到一个弹出窗口,你必须给它一个 id。没有 id,无法进入弹出窗口。当您查看 jQM 在看到 data-role='popup' 时生成的代码时,这一点就会变得清晰。代替原来的弹出定义,它留下一个空的 DIV 标记,其中包含的内容略多于

<div>
<!--Placeholder for popupid-->
<div>

在最初定义弹出窗口的页面底部,它放入两个新 div

<div class='ui-popup-screen ui-screen-hidden' id='popupid-screen'></div>
<div class='ui-popup-container ui-selectmenu-hidden' id='popupid-popup'>..</div>

最初定义的弹出窗口的所有内容都被移动到后一个 div 中。不要为原始弹出窗口提供 id,并且通过 jQuery 以任何有用的方式访问它的机制只会崩溃。

于 2012-12-22T06:42:37.480 回答