【发布时间】:2012-09-24 10:36:25
【问题描述】:
我正在使用 jQuery Mobile 制作移动应用程序。进展顺利,但有一个主要问题我无法解决。
我有一个包含多个页面的 index.html (data-role=page)。因为我传递参数,所以我在我的 javascript 中使用点击事件调用这些页面。这些页面由从 json 文件(基于参数)创建(live pagebeforeshow)的列表视图组成。 例如,在类别页面上,您单击某个类别,它的 ID 会传递到下一页,该页面会在新列表中显示该类别的子类别。
现在奇怪的是,当我单击后退按钮或关闭对话框时,打开该页面或该对话框的单击事件通常会再次自动触发,但并非总是如此。 例如,您单击列表中的一个项目。点击事件触发一个对话框弹出。你关闭对话框,列表(上一页)被重新加载,然后对话框立即再次弹出,好像点击事件再次被触发......很奇怪。
我不知道。
这是我用来告诉浏览器获取 json 并显示我需要的内容的事件示例。
$('#dialog_zin_nl').live('pagebeforeshow', function(event, data) {
*这里是该页面上必须发生的所有代码,例如获取正确的 json 内容并将其附加到 html...
在那之后(在这个'pagebeforeshow'内)我声明我的按钮点击事件像这样
$("#execute_sub_rubriek").on("click", ".selected_zin_nl", function(event){
var selected_zin_nl = $(this).attr('selected-zin-nl');
$.mobile.changePage( "#dialog_zin_nl?current_rubriek=" + current_rubriek_id + "¤t_sub_rubriek=" + current_sub_rubriek_id + "¤t_zin=" + selected_zin_nl + "", { role: "dialog"} );
});
如果有人遇到过同样的问题或知道出了什么问题。请解释一下。
谢谢!
EDIT 如果我使用 pageinit 我没有这个问题。虽然我不能使用 pageinit,因为当用户选择另一个类别时,必须刷新页面的内容。
我的一个想法:如果页面被后退按钮调用,是否可以调用pageinit,如果页面被另一个按钮调用,是否可以调用pagebeforeshow?
【问题讨论】:
标签: jquery events jquery-mobile triggers