Javascript 为什么我所有的jQuery mobile.on()指令都会在页面加载时自动触发?

Javascript 为什么我所有的jQuery mobile.on()指令都会在页面加载时自动触发?,javascript,jquery,jquery-mobile,Javascript,Jquery,Jquery Mobile,我目前正在制作一个基于jQuery移动框架的小型移动web应用程序,它应该加载一堆页面,用户可以向左或向右滑动,或者触摸/单击“上一页”/“下一页”按钮进行浏览。因此,我的代码如下所示: function next(destination) { alert('next'); // for testing purpose $.mobile.changePage(destination, { transition: "slide" }); } functio

我目前正在制作一个基于jQuery移动框架的小型移动web应用程序,它应该加载一堆页面,用户可以向左或向右滑动,或者触摸/单击“上一页”/“下一页”按钮进行浏览。因此,我的代码如下所示:

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()”指令,而无需等待我的单击或滑动,因此我会收到警报,每次警报后都会进行页面更改,并进行正确的转换。我还尝试将这些指令放在“$(window.load()”之外


如果有人能告诉我我做错了什么,或者告诉我一个更简单的方法,我需要你的帮助。谢谢

因为您缺少为事件处理程序创建引用的所有匿名函数,请将它们全部更改为此模式

$("#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);
});

使用页面事件,不要使用
.load()
附加事件。