我有一些控件,这些控件在每个站点上都可见。为了将这些控件移动到当前活动的页面,我使用了pagebeforechange
事件。
$(document).bind('pagebeforechange',function(e,data) {
var topageid=$(data.toPage).attr('id'); //MY QUESTION IS ON THIS LINE
console.log("Changing page to "+topageid);
$header = $('#myheader');
$footer = $('#myfooter');
$header.detach();
$footer.detach();
$header.prependTo(topageid);
$footer.appendTo(topageid);
});
上面显示的源代码有时工作,有时不工作。这是因为data.toPage
有时只包含一个像...index.html#mypage
这样的url。在任何情况下如何检测toPage
的id?
发布于 2012-10-18 02:36:40
您可以使用pagebeforeshow
事件而不是pagebeforechange
事件。不同之处在于,前者在将外部页面添加到DOM之后触发,而后者在此之前触发。
还有其他页面事件可以为您工作:http://jquerymobile.com/demos/1.2.0/docs/api/events.html
来自文档(链接到上面):
pagebeforechange
此事件在任何页面加载或转换之前触发。
。
pagebeforeshow
在实际的转换动画开始之前,在我们要转换到的"toPage“上触发。
发布于 2013-12-16 18:58:44
pagebeforechange
事件被触发两次,第一次是在加载目标页面之前,也就是获取包含data.toPage
的时候。第二次触发事件时,将加载目标页面,在这种情况下,您将获得一个包含data.toPage
中页面DOM的查询对象。如果你想坚持使用pagebeforechange
事件,那么你可以这样做:
if (typeof data.toPage != "string") {
... Do your stuff ...
}
如果您对要使用的事件很灵活,那么请遵循Jasper的建议,并使用pagebeforeshow,这将允许您在页面转换到之前修改分离页面的DOM。
https://stackoverflow.com/questions/12940527
复制相似问题