I try to link virtual pages using jQuery Mobile, but I have two problems :
我尝试使用jQuery Mobile链接虚拟页面,但我有两个问题:
- The first time when I load the page, the CSS is not applied.
- 我第一次加载页面时,不会应用CSS。
- After when I choose a page and I want to change to another page, I notice that every time I passed by the page 1.
- 当我选择一个页面并且我想要更改为另一个页面时,我注意到每次我经过页面1。
This is my example.
这是我的榜样。
Code :
代码:
var nbrButton = 3;
$(document).ready(function(){
for(i = 1;i <= nbrButton;i++) {
$("body").append('<div id="p'+i+'" data-role="page" class="pages"><div data-role="content">Page'+i+'</br><a data-role="button" rel="internal" href="#p1" data-inline="true">1</a><a data-role="button" rel="internal" href="#p2" data-inline="true">2</a><a data-role="button" rel="internal" href="#p3" data-inline="true">3</a></div></div>');
}
$("#p1").show();
});
Could you tell me what is the problem or if there is a better way to do that.
你能告诉我这是什么问题,或者是否有更好的方法可以做到这一点。
Thank you.
谢谢。
3 个解决方案
#1
2
Update
更新
I also removed data-rel="internal"
in the links.
我还删除了链接中的data-rel =“internal”。
Answer
回答
I have done the below.
我做了以下。
instead of
代替
$('#p1').show();
I add this
我加上这个
$.mobile.changePage( '#p1', { allowSamePageTransition: true });
It will refresh Page-1 p1
to reload styles.
它将刷新Page-1 p1以重新加载样式。
Working example.
工作实例。
#2
2
You can't dynamically create new jQuery Mobile page (you can, but that page will not have styles) unless you have at least one existing. There's a workaround here, you can create an empty jQuery mobile page and use it to create a new one.
您不能动态创建新的jQuery Mobile页面(您可以,但该页面将没有样式),除非您至少有一个现有页面。这里有一个解决方法,你可以创建一个空的jQuery移动页面并用它来创建一个新页面。
Here's a working example:
这是一个有效的例子:
<!DOCTYPE html>
<html>
<head>
<title>jQM Complex Demo</title>
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=no; target-densityDpi=device-dpi"/>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
<script src="http://www.dragan-gaic.info/js/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
<script>
$(document).on('pageshow', '#index', function(){
$('<div>').attr({'data-role':'page','id':'second'}).appendTo('body');
$('<div>').attr({'data-role':'header','id':'second-header'}).append('<h3>Header Title</h3>').appendTo('#second');
$.mobile.changePage("#second");
});
</script>
</head>
<body>
<div data-role="page" id="index">
</div>
</body>
</html>
Now you should use a pageshow page event of a first hidden page to create new dynamic pages. After page are cretaed just use change page to show a first visible page.
现在,您应该使用第一个隐藏页面的pageshow页面事件来创建新的动态页面。页面被创建后,只需使用更改页面显示第一个可见页面。
#3
-1
To apply CSS styles just add $("#p1").trigger('create');
as last line after $("#p1").show();
要应用CSS样式,只需添加$(“#p1”)。trigger('create'); $(“#p1”)之后的最后一行.show();
#1
2
Update
更新
I also removed data-rel="internal"
in the links.
我还删除了链接中的data-rel =“internal”。
Answer
回答
I have done the below.
我做了以下。
instead of
代替
$('#p1').show();
I add this
我加上这个
$.mobile.changePage( '#p1', { allowSamePageTransition: true });
It will refresh Page-1 p1
to reload styles.
它将刷新Page-1 p1以重新加载样式。
Working example.
工作实例。
#2
2
You can't dynamically create new jQuery Mobile page (you can, but that page will not have styles) unless you have at least one existing. There's a workaround here, you can create an empty jQuery mobile page and use it to create a new one.
您不能动态创建新的jQuery Mobile页面(您可以,但该页面将没有样式),除非您至少有一个现有页面。这里有一个解决方法,你可以创建一个空的jQuery移动页面并用它来创建一个新页面。
Here's a working example:
这是一个有效的例子:
<!DOCTYPE html>
<html>
<head>
<title>jQM Complex Demo</title>
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=no; target-densityDpi=device-dpi"/>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
<script src="http://www.dragan-gaic.info/js/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
<script>
$(document).on('pageshow', '#index', function(){
$('<div>').attr({'data-role':'page','id':'second'}).appendTo('body');
$('<div>').attr({'data-role':'header','id':'second-header'}).append('<h3>Header Title</h3>').appendTo('#second');
$.mobile.changePage("#second");
});
</script>
</head>
<body>
<div data-role="page" id="index">
</div>
</body>
</html>
Now you should use a pageshow page event of a first hidden page to create new dynamic pages. After page are cretaed just use change page to show a first visible page.
现在,您应该使用第一个隐藏页面的pageshow页面事件来创建新的动态页面。页面被创建后,只需使用更改页面显示第一个可见页面。
#3
-1
To apply CSS styles just add $("#p1").trigger('create');
as last line after $("#p1").show();
要应用CSS样式,只需添加$(“#p1”)。trigger('create'); $(“#p1”)之后的最后一行.show();