jQuery页面on/live/bind的pageinit、pageshow事件

10

我正在使用jQuery mobile开发应用程序,我想把用户面板中的所有页面放在一个大文件中,并通过一个大的.js文件运行它。我不确定我是否可以这样编写我的.js文件:

在用户面板加载时初始化

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

});

然后当特定页面将按ID调用时,如果我可以放置这个:

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

});

对于每一页,都像这样在第一个里面:

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

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

    });

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

    });

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

    });

});

那么,是这样工作的吗?还是我误解了jQuery/JS的基本概念?如果是,有什么好方法吗?

1个回答

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(){

});

1
有没有办法添加脚本,仅在 .html 文件实际加载时运行,而不是在我在文件内切换页面时运行? - Jakub Zak
1
逻辑是相同的,只需给它们一个ID,唯一不同的是它们必须在第一个HTML文件中被加载/初始化。 - Gajotres

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接