Javascript 无页面更改事件触发
在jquerymobile中,我试图检测对特定页面的成功页面更改。我有以下代码,内联在我想要加载的页面上Javascript 无页面更改事件触发,javascript,jquery,events,mobile,jquery-mobile,Javascript,Jquery,Events,Mobile,Jquery Mobile,在jquerymobile中,我试图检测对特定页面的成功页面更改。我有以下代码,内联在我想要加载的页面上 <script> $(document).bind( "pagebeforechange", function( e, data ) { alert("pagebeforechange"); }); $(document).bind( "pagechange", function( e, data ) {
<script>
$(document).bind( "pagebeforechange", function( e, data ) {
alert("pagebeforechange");
});
$(document).bind( "pagechange", function( e, data ) {
alert("pagechange");
});
$(document).bind( "pagechangefailed", function( e, data ) {
alert("pagechangefailed");
});
$(document).live( "pagebeforechange", function( e, data ) {
alert("pagebeforechange live");
});
$(document).live( "pagechange", function( e, data ) {
alert("pagechange live");
});
$(document).live( "pagechangefailed", function( e, data ) {
alert("pagechangefailed live");
});
</script>
$(文档).bind(“pagebeforechange”,函数(e,数据){
警报(“更改前页面”);
});
$(文档).bind(“页面更改”,函数(e,数据){
警报(“页面更改”);
});
$(文档).bind(“pagechangefailed”,函数(e,数据){
警报(“页面更改失败”);
});
$(document).live(“pagebeforechange”,函数(e,数据){
警报(“现场更改前页面”);
});
$(文档).live(“页面更改”,函数(e,数据){
警报(“页面更改实时”);
});
$(document).live(“pagechangefailed”,函数(e,数据){
警报(“pagechangefailed live”);
});
直接加载页面或刷新页面时,我会收到相应的警报,但在Jquery移动应用程序中从另一个区域导航时,我不会收到相应的警报
页面由页脚中的“您的汽车”选项卡调用
<div id="footer" data-role="footer" data-position="fixed">
<div data-role="navbar">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="index.html">Features</a></li>
<li><a href="about.html">Your Car</a></li>
<li><a href="index.html">Contact</a></li>
</ul>
</div>
</div>
您在哪里绑定到此事件
您是否在文件中阅读了以下内容:
重要提示:使用pageInit(),而不是$(document).ready()
在jQuery中学习的第一件事是调用
$(document).ready()函数,以便在
DOM已加载。但是,在jQuery Mobile中,Ajax用于加载
导航时,将每个页面的内容导入DOM,并准备好DOM
处理程序仅对第一页执行。每当
加载并创建新页面后,可以绑定到pageinit事件。
本页底部详细解释了此事件
在pageshow事件中放置代码是否有效?如果您试图检测页面或位置,则可能会出现此问题。可能是这样的:
<script type="text/javascript">
$('[data-role=page]').live('pageshow', function (event, ui) {
hash = location.hash;
page = hash.susbtr(1);
if (page.indexOf('about.html') >= 0) {
alert('you made it!');
}
});
</script>
$('[data role=page]')。live('pageshow',函数(事件,ui){
hash=location.hash;
page=hash.susbtr(1);
如果(page.indexOf('about.html')>=0{
警惕(“你成功了!”);
}
});
更新
在进一步测试这个场景并重新阅读您的问题之后,我认为我能够重现结果
这与您描述的一样,仅在直接加载页面或刷新页面时触发警报:
<body>
<div data-role="page">
<!-- page stuff -->
</div>
<script type="text/javascript"> ..bind events... </script>
</body>
…绑定事件。。。
但是,当我将javascript直接移动到页面内部时,它会按预期工作并触发所有绑定事件,无论如何到达页面:
<body>
<div data-role="page">
<script type="text/javascript"> ..bind events... </script>
<!-- page stuff -->
</div>
</body>
…绑定事件。。。
Luke的想法是正确的:显然,您遇到的问题与代码中绑定发生的位置有关。沙纳布斯证明了这一点
然而,在您的情况下,您应该在jQuery mobile的mobileinit
事件被触发时进行绑定,而不是像Luke所建议的那样pageInit
示例(在所有页面更改事件上激发):
$(document).bind('mobileinit',function(){
$(文档).on('pagechange',函数(){
window.alert('page changed!');
});
});
如上面代码所示,请注意,由
mobileinit
触发的处理程序必须包含在jQuery mobile
标记之前。您是如何触发页面更改的?你能把你的一些代码包括进来吗?我在问题中把它说得更清楚了,谢谢。你试过pageshow或pagebeforeshow页面转换事件吗?jQM文档:我都没有使用。在测试了pageinit之后,它似乎没有更好的效果,在阅读文档时,pagechange似乎就是我想要的want@MildFuzz有了这个,我想说,也许在那个里你们绑定到你们的事件,这是早期的解决方案,我有,但这是一个黑客,不是一个真正的解决方案,我的解决方案也不太管用。如果您声明脚本类型-type=“text/jasvascript”
,会有帮助吗?该死,笔记本电脑正在工作,我真的想试试这个!!我将在星期一回来报到
<script type="text/javascript">
$(document).bind('mobileinit', function() {
$(document).on('pagechange', function () {
window.alert('page changed!');
});
});
</script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.js"></script>