1

我有一个带有页面的 jquery 移动应用程序。此页面包含三个 DIV,我根据各种变量以编程方式选择其中一个 DIV。无论如何,一个 DIV 包含一个选择元素。该元素中有 20 个项目。由于剪切量,选择框在其自己的对话框中打开。我对此很好,但是,在用户做出选择后,我的托管页面的 pagebeforeshow 事件会再次被触发。我的问题是,我似乎无法弄清楚如何检测到由于用户选择选项或关闭选择对话框而触发了此事件。

有没有办法在 pagebeforeshow 事件中检测我们是如何到达这里的?

4

2 回答 2

1

jQuery mobile 将元数据传递给大多数事件的回调函数。从上的文档pagebeforehow

在实际过渡动画开始之前,在我们过渡到的“toPage”上触发。此事件的回调将接收一个数据对象作为其第二个参数。此数据对象具有以下属性:

  • prevPage (object) - 一个 jQuery 集合对象,其中包含我们要转换的页面 DOM 元素。请注意,在应用程序启动期间转换第一页时,此集合为空。

您应该能够在您的回调函数中使用它来发挥您的优势,即检测是否prevPage是当前页面。这可能看起来像:

$('#yourPage').live('pagebeforeshow', function(event, data) {
    var from = data.prevPage;
    // do some inspection of `from` and branch accordingly
    // might require some experimental console.logging first
});
于 2012-04-20T17:52:42.990 回答
0

我也没有验证上述评论中提出的问题,但 data.prevPage 有整个前一页 HTML 的副本,可通过data.prevPage[0].innerHTML. 我敢肯定你可以做一些事情,比如绑定到选择对话框上的点击事件,并告诉它在用户选择任何条目的 DOM 中添加一个类或任何东西,然后将其从 HTML 中刮掉?只是在那里抛出一个想法。

于 2012-04-27T21:42:06.097 回答