jQuery页面/ live/bind pageinit,pageshow

Jak*_*Zak 10 html javascript jquery web-applications jquery-mobile

我正在使用jQuery mobile进行应用程序,我正在尝试将userpanel中的所有页面放入一个大文件中并通过一个大的.js文件运行它.我不知道的是我是否可以这样写我的.js文件:

在加载userpanel时初始化

$(document).on('pageinit', function(){

});
Run Code Online (Sandbox Code Playgroud)

如果我可以这样说,当某个页面将被id调用时:

$("#userpanel").on('pageshow', function(){

});
Run Code Online (Sandbox Code Playgroud)

每个页面内的第一个内容如下:

$(document).on('pageinit', function(){

    $("#userpanel").on('pageshow', function(){

    });

    $("#*********").on('pageshow', function(){

    });

    $("#*********").on('pageshow', function(){

    });

});
Run Code Online (Sandbox Code Playgroud)

等等,这是它的工作原理还是我误解了jQuery/JS的基本概念?如果是的话什么是好方法?

Gaj*_*res 3

首先,不要用作page events其他页面事件的子级,因为它们不应该像那样工作。在这种情况下,所有这些pageshow事件都将在没有其父事件的情况下正常触发pageinit

这是一个工作jsFiddle示例。

要了解有关jQuery Mobile页面事件的更多信息,请查看这篇文章,为了更加透明,这是我的个人博客。或者可以在这里找到。

所以声明页面事件的正确方法是这样的:

$("#userpanel").on('pagebeforeshow', function(){

});

$("#userpanel").on('pageshow', function(){

});

$("#userpanel").on('pagebeforeshow', function(){

});

$("#userpanel").on('pageshow', function(){

});

$("#userpanel").on('pagebeforeshow', function(){

});

$("#userpanel").on('pageshow', function(){

});
Run Code Online (Sandbox Code Playgroud)