我目前正在制作基于jQuery移动框架的小型移动网络应用程序,该框架应该加载一堆用户可以向左或向右滑动或触摸/单击"上一页&#的页面34; /"接着"按钮进行浏览。所以我的代码看起来像这样:
function next(destination) {
alert('next'); // for testing purpose
$.mobile.changePage(destination, {
transition: "slide"
});
}
function prev(destination) {
alert('prev'); // for testing purpose
$.mobile.changePage(destination, {
transition: "slide",
reverse: true
});
}
$(window).load(function(){
$("#btn_next1").on("click", next("index.html#pagetwo"));
$("#btn_prev2").on("click", prev("index.html#pageone"));
$("#btn_next2").on("click", next("index.html#pagethree"));
$("#btn_prev3").on("click", prev("index.html#pageone"));
$("#pageone").on("swipeleft", next("index.html#pagetwo"));
$("#pagetwo").on("swipeleft", next("index.html#pagethree"));
$("#pagetwo").on("swiperight", prev("index.html#pageone"));
$("#pagethree").on("swiperight", prev("index.html#pagetwo"));
});
我无法弄清楚我做错了什么但是当我在浏览器上尝试这个时,我所有的" .on()"指令在启动时触发,无需等待我的点击或滑动,因此我收到警报,每个警报后面都有正确转换的页面更改。我还尝试将这些说明放在" $(窗口).load()"。
之外如果有人可以告诉我我做错了什么,或者可能告诉我更简单的方法,我需要你的帮助。谢谢
答案 0 :(得分:4)
因为您缺少为事件处理程序创建引用的所有匿名函数,所以将所有这些函数更改为此模式
$("#btn_next1").on("click", function() {
next("index.html#pagetwo"));
});
当您使用括号调用函数时,函数会立即执行并返回结果,这意味着如果您不需要传递参数,则可以直接引用函数
$("#btn_next1").on("click", next);
但你做不到
$("#btn_next1").on("click", next(argument));
然后你必须做
$("#btn_next1").on("click", function() {
next(argument);
});