Jquery mobile 在jQuery移动页面中显示和隐藏内容

Jquery mobile 在jQuery移动页面中显示和隐藏内容,jquery-mobile,Jquery Mobile,我的jQuery移动应用程序中有两个页面。点击第一个页面上的列表项时,用户将进入第二个html页面。第二个页面有一个导航栏,它有两个按钮。我希望这两个导航栏按钮在页面的内容区域显示/隐藏一个div。我找不到要使用的事件处理机制。document.ready不起作用,pageinit也不起作用。有人能告诉我一个示例吗?检查这个jsfiddle上的代码:检查这个jsfiddle上的代码:如果你的意思是你有两个(或更多)单独的HTML文件,你需要了解如何在jQM中正确处理事件,那么这里有一个简单的介绍

我的jQuery移动应用程序中有两个页面。点击第一个页面上的列表项时,用户将进入第二个html页面。第二个页面有一个导航栏,它有两个按钮。我希望这两个导航栏按钮在页面的内容区域显示/隐藏一个div。我找不到要使用的事件处理机制。document.ready不起作用,pageinit也不起作用。有人能告诉我一个示例吗?

检查这个jsfiddle上的代码:

检查这个jsfiddle上的代码:

如果你的意思是你有两个(或更多)单独的HTML文件,你需要了解如何在jQM中正确处理事件,那么这里有一个简单的介绍

  • jQM甚至通过AJAX加载将单独的HTML文件添加到单个DOM中

  • 通过AJAX加载的每个页面都会触发一个
    pageinit
    和一个
    pageshow
    事件,区别在于当您导航回页面时,pageshow会重新触发

  • 第一页之后的每一页都只加载
    元素中的内容,因此,如果后续页面的
    中有JS,而该JS没有拉入中,那么第二页的navbar JS代码可能在第二页中,这是一件需要注意的大事

  • 那么,如何管理JS并保持其组织性呢?在我们的jQM应用程序中,我们一开始就加载了所有的JS,无论如何它都不是太大。我们有一个入口点,每个页面上都包含JS代码,因此无论从哪个页面输入JS,都只会加载一次我们需要的所有JS,并且不再加载JS警告如果您的
    中有JS,则每次您访问页面时它都会重新出现
    只有在您知道它是如何工作的情况下才能执行此操作

  • 您的入口点应该是单个函数
    $(文档)。在('pageinit pageshow','div:jqmData(role=“page”),div:jqmData(role=“dialog”)'上,函数(事件){
    现在,加载的每个页面/对话框都会触发此事件处理程序,您可以根据
    事件来确定它是
    pageinit
    还是
    pageshow
    。键入
    ,以及通过添加数据属性或类或任何您想要加载到
    的内容来加载哪个页面,然后使用switch语句来处理所有情况

  • 您现在拥有了所需的所有信息,
    这是对当前页面的一个方便的引用,使用
    .on
    功能绑定事件侦听器,因此您可以在页面上而不是在文档根目录下进行侦听,例如,您的导航栏内容。-如果使用
    .live
    它将侦听整个文档(但并非所有页面都是DOM缓存的),不管这对性能有什么坏处!实际上,在一个页面中,我们总是使用
    。查找
    从页面开始,例如$this.find('div.something'),我们从不使用$('div.something'),这将对整个DOM进行爬网,可能会命中其他页面,更糟糕的是,会给您当前页面之外的错误结果
    ,因此另一个大错误是执行类似于
    $('img.selectItem').bind的操作('click'…
    您可能在另一个DOM缓存页面中有一个img.selectItem,因此您将绑定到比您想要的更多的内容-我将执行类似于
    $this.find('img.selectItem').bind的操作(
    (其中$this是当前页面)

  • 显然,我们最终有了很多代码,所以我们编写了一个处理程序对象来调用其他JS文件中的函数——您可以使用RequireJS,但我们从来不需要

    ,如果您的意思是您有两个(或更多)单独的HTML文件,您需要了解如何在jQM中正确处理事件,那么这里有一个快速介绍

  • jQM甚至通过AJAX加载将单独的HTML文件添加到单个DOM中

  • 通过AJAX加载的每个页面都会触发一个
    pageinit
    和一个
    pageshow
    事件,区别在于当您导航回页面时,pageshow会重新触发

  • 第一页之后的每一页都只加载
    元素中的内容,因此,如果后续页面的
    中有JS,而该JS没有拉入中,那么第二页的navbar JS代码可能在第二页中,这是一件需要注意的大事

  • 那么,你如何管理你的JS并使其井然有序呢?在我们的jQM应用程序中,我们一开始就加载所有的JS,无论如何它都不会太大。我们有一个入口点,每个页面都包含JS代码,因此无论你从哪个页面输入,都只加载一次我们需要的所有JS,并且不会加载更多的JS。警告如果你有JS wi精简您的
    它将在您每次访问页面时重新刷新
    只有在您知道它是如何工作的情况下才能执行此操作

  • 您的入口点应该是单个函数
    $(文档)。在('pageinit pageshow','div:jqmData(role=“page”),div:jqmData(role=“dialog”)'上,函数(事件){
    现在,加载的每个页面/对话框都会触发此事件处理程序,您可以根据
    事件来确定它是
    pageinit
    还是
    pageshow
    。键入
    ,以及通过添加数据属性或类或任何您想要加载到
    的内容来加载哪个页面,然后使用switch语句来处理所有情况

  • 您现在拥有了所需的所有信息,
    这是对当前页面的一个方便的引用,使用
    .on
    功能绑定事件侦听器,因此您可以在页面上而不是在文档根目录下进行侦听,例如,您的导航栏内容。-如果使用
    .live
    它将侦听整个文档(但并非所有页面都是DOM缓存的),不管这对性能有什么坏处!实际上,在一个页面中,我们总是使用
    。查找
    从页面开始,例如$this.find('div.something'),我们从不使用$('div.something'),这将爬网整个DOM,可能会命中其他页面,更糟糕的是,会给您当前页面之外的错误结果
    ,因此另一个大错误是执行类似于
    $('img.selectItem').bind('click'…
    )的操作,您可能会在另一个页面中有一个img.selectItem