0

我得到了一些在每个站点上可见的控件。要将这些控件移动到当前活动的页面,我正在使用该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. toPage在任何情况下如何检测 id ?

4

2 回答 2

1

您可以使用pagebeforeshow事件而不是pagebeforechange事件。不同之处在于前者在外部页面添加到 DOM 之后触发,而后者在此之前触发。

还有其他适合您的页面事件:http: //jquerymobile.com/demos/1.2.0/docs/api/events.html

从文档(链接到上面):

pagebeforechange

此事件在任何页面加载或转换之前触发。

.

显示前的页面

在实际过渡动画开始之前,在我们过渡到的“toPage”上触发。

于 2012-10-17T18:36:39.880 回答
0

pagebeforechange事件被触发两次,第一次是在目标页面加载之前触发,也就是当您data.toPage包含一个 URL 时。第二次触发事件时,目标页面被加载,在这种情况下,您将获得一个包含页面 DOM 的查询对象data.toPage。如果您想坚持参加该pagebeforechange活动,则可以执行以下操作:

if (typeof data.toPage != "string") {
    ... Do your stuff ...
}

如果您对要使用的事件很灵活,请遵循 Jasper 的建议并使用 pagebeforeshow,这将允许您在页面转换到之前修改目标页面 DOM。

于 2013-12-16T10:58:44.170 回答