我正在使用 jQuery Mobile 制作移动应用程序。进展顺利,但有一个主要问题我无法解决。
我有几个页面(数据角色=页面)的单个 index.html。因为我传递参数,所以我在我的 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"} );
});
如果有人遇到过同样的问题或知道出了什么问题。请解释一下。
谢谢!
编辑如果我使用 pageinit 我没有这个问题。虽然我不能使用 pageinit,因为当用户选择另一个类别时,必须刷新页面的内容。
我的一个想法:如果页面被后退按钮调用,是否可以调用 pageinit,如果页面被另一个按钮调用,是否可以调用 pagebeforeshow?