为什么我的jQuery mobile .on()指令在页面加载时自动填充?

时间:2014-04-01 10:40:14

标签: javascript jquery jquery-mobile

我目前正在制作基于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()"。

之外

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

1 个答案:

答案 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);
});