我有一个有页面的jquery移动应用程序。这个页面有三个DIV,我以编程方式根据各种变量选择其中一个DIV。无论如何,一个DIV包含一个选择元素。这个元素有20个项目。由于剪切量,选择框将在其自己的对话框中打开。我很好,但是,在用户做出选择后,我的主机页面的pagebeforeshow事件再次被触发。我的问题是,我似乎无法弄清楚如何通过用户选择选项或关闭选择对话框来检测此事件被触发。
有没有办法在pagebeforeshow事件中检测我们是如何到达这里的?
答案 0 :(得分:1)
jQuery mobile将元数据传递给大多数事件的回调函数。来自pagebeforehow
上的docs:
在实际过渡动画开始之前,我们正在转换到的“toPage”上触发。此事件的回调将接收数据对象作为其第二个arg。该数据对象具有以下属性:
- 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
});
答案 1 :(得分:0)
我也没有验证上面评论中提出的问题,但data.prevPage有整个上一页HTML的副本,可通过data.prevPage[0].innerHTML
访问。我确定你可以做一些事情,比如绑定到选择对话框上的click事件,并告诉它在用户选择任何条目的DOM中添加一个类或其他什么,并将其从HTML中删除?只是抛出一个想法。