我和这篇文章有同样的问题。但该解决方案不适用于我的项目。
我使用 ASP.NET MVC4 和 JQM。我在头部加载了一个 JS 文件。我有一个这样的菜单:
<a href="#left-panel" id="link-menu" class="ui-panel-animate"></a>
<div data-role="panel" id="left-panel" data-display="push">
<ul data-role="listview">
...
</ul>
</div>
我的链接菜单 CSS 类:
#link-menu
{
top: 3px;
position: absolute;
background: url("images/icons-36-white.png");
}
这是一个图像,它的位置是绝对的。因此,当面板打开时,我必须添加:
.Menu-decalage {
-webkit-transform: translate3d(272px,0,0);
-moz-transform: translate3d(272px,0,0);
transform: translate3d(272px,0,0);
}
在我的 JS 文件中,我添加了:
$(document).on('pagebeforeshow', function () {
$("#left-panel").panel({
beforeopen: function (event, ui) {
$("#link-menu").addClass("Menu-decalage");
},
beforeclose: function (event, ui) {
$("#link-menu").removeClass("Menu-decalage");
}
});
它在加载第一页时起作用,而不是在导航之后。我知道代码是在第一页上执行的,我尝试过:
$.mobile.activePage.find('#left-panel').panel();
但它不起作用。
我试图改变
$(document).on('pagebeforeshow', function () {
到
$(document).on('pageinit', function () {
但 activePage 未定义。
所以如果有人可以给我一个解决方案:谢谢