Javascript 如何在jQuery移动应用程序中仅显示和隐藏一个页面时触发事件
好的,我开始使用jQuery Mobile。我远非javascript专家。jquerymobile非常酷,但它让我在这个问题上难倒了 当某个页面显示时,我需要运行一些代码,当它隐藏时,我需要运行另一个代码——但只需要层次结构的某个页面。我知道如何使用pagecreate和pageshow事件(并使用它们处理需要在每个页面上运行的代码)。但是,我需要能够检测特定页面何时显示以及何时隐藏 我试过什么了?我在页面的以下标记上放置了一个自定义属性:Javascript 如何在jQuery移动应用程序中仅显示和隐藏一个页面时触发事件,javascript,jquery-selectors,jquery-mobile,jquery,Javascript,Jquery Selectors,Jquery Mobile,Jquery,好的,我开始使用jQuery Mobile。我远非javascript专家。jquerymobile非常酷,但它让我在这个问题上难倒了 当某个页面显示时,我需要运行一些代码,当它隐藏时,我需要运行另一个代码——但只需要层次结构的某个页面。我知道如何使用pagecreate和pageshow事件(并使用它们处理需要在每个页面上运行的代码)。但是,我需要能够检测特定页面何时显示以及何时隐藏 我试过什么了?我在页面的以下标记上放置了一个自定义属性: <div data-role="content
<div data-role="content" myspecialattribute="true">
然后在pageshow事件中,我使用jqmData()搜索该元素。这是成功的,第一次遇到页面,然后就不工作了。由于JQM加载页面的方式,因此,即使我移动到其他页面,该标记和该属性也总是会在dom中找到,因为JQM使用聪明的ajax显示/隐藏页面
我花了好几个小时寻找解决方案——但我的javascript技能根本不存在。我认为这很容易,所以我觉得寻求帮助有点愚蠢。您需要在页面中添加一个id,并使用live live()触发所需的事件,live示例:
导航
导航
Hey感谢您快速而详细的回复。我会尝试一下,然后再给你回复。我遇到的一个复杂问题是,我正在使用一个布局引擎(Razor)和_layout.cshtml文件,就像使用一个普通的“page”div一样,所以我希望使用“content”div来实现这一点。但是如果这样做有效,那么我可能会放弃共享布局文件。+1,检查。嗯,那很有效,谢谢你。是的,我需要将“page”div从主布局页移走,但效果很好。非常感谢。
$('#page2').live('pageshow',function(event, ui){
alert('Alert for page 2 only');
});
<div data-role="page" id="home">
<div data-role="content">
<ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="f">
<li data-role="list-divider">Navigation</li>
<li><a href="#page2">Page 2</a></li>
</ul>
</div>
</div>
<div data-role="page" id="page2">
<div data-role="content">
<ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="f">
<li data-role="list-divider">Navigation</li>
<li><a href="#home">Home Page</a></li>
</ul>
</div>
</div>