【发布时间】:2014-07-10 15:48:31
【问题描述】:
我知道这会被一次又一次地问到,我已经用其他答案部分解决了这个问题。不过我现在卡住了。
我正在使用弹出窗口来浏览应用程序。事件顺序为: 1. 按“下一步”按钮。 2.关闭弹窗 3.换页 4.打开新的弹窗
您不能链接弹出窗口,所以我使用 afterclose。它适用于第一次转换,但之后我没有弹出窗口。此代码中的 console.log 给出了输出。
$('#introPanel1Next').click(function(){
$('#introPanel1').popup({
afterclose: function(){
$(":mobile-pagecontainer").pagecontainer("change", "#page2", {
transition: "slide"
}).on( "pagecontainershow", function() {
$('#introPanel2').popup('open');
});
}
}).popup('close');
});
$('#introPanel2Next').click(function(){
$('#introPanel2').popup({
afterclose: function(){
$(":mobile-pagecontainer").pagecontainer("change", "#page3", {
transition: "slide"
}).on( "pagecontainershow", function() {
$('#introPanel3').popup('open');
});
}
}).popup('close');
});
所以我可以从 page1 转到 page2 并弹出一个窗口,但即使我可以转到 page3 introPanel3 也不会弹出。
我认为这可能是我正在监听的事件(例如 pagecontainershow),但我已经全部尝试过了。其中一些不会在 page2 上弹出窗口,因为页面需要在调用 popup("open") 之前完成加载。
我不明白为什么它适用于第一个转换和弹出窗口,但不适用于下一个(因此后续的,总共 5 个)。
关于下面的答案,我试过这个:
$('#introPanel1Next').click(function(){
$('#introPanel1').popup({
afterclose: function(){
$(":mobile-pagecontainer").pagecontainer("change", "#page2", {
transition: "slide"
}).on( "pagecontainershow", function() {
$('#introPanel2', ui.toPage).popup("open");
});
}
}).popup('close');
});
它不起作用。 :(
【问题讨论】:
-
您应该只在点击处理程序之外定义一次 pagecontainershow 事件,然后检查 ui.toPage/ui.prevPage 以决定显示哪个弹出窗口。它也将有助于查看您的 HTML。与页面等相关的弹出面板在哪里?也许是小提琴?
-
因为每当
pagecontainershow触发时,它都会打开$('#introPanel2').popup('open');。 -
function (e, ui)你忘了e, ui。 -
我已经添加了。还是一样。
标签: javascript jquery jquery-mobile popup