jQueryMobile 'data-scroll=true'不适用于动态注入的页面

发布于 2024-12-19 05:17:07 字数 1274 浏览 1 评论 0原文

如果页面是静态页面,data-scroll="true" 工作正常,但如果我使用 javascript 动态添加页面,它就不起作用。

我的标题部分是:

<link rel="stylesheet" href="css/jquery.mobile-1.0rc2.css" />
<link rel="stylesheet" href="css/jquery.mobile.scrollview.css" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.js"></script>
<script type="text/javascript" src="js/jquery.mobile-1.0rc2.js"></script>
<script type="text/javascript" src="js/jquery.easing.1.3.js"></script>
<script type="text/javascript" src="js/jquery.mobile.scrollview.js"></script>
<script type="text/javascript" src="js/scrollview.js"></script>

我还添加了 data-scroll 属性并使用 javascript 将其设置为 true,下面是我的代码:

var pageHtml = "<div data-role='page' data-scroll='true' id=page" + pageId + " data-url=page" + pageId + ">";
var pageHeader = "<div data-role='header' data-position='fixed'><h1>" + menuItem + "</h1></div>";
var pageContent = "<div data-role='content' id='page" + pageId + "Content'></div>";
var page = pageHtml + pageHeader + pageContent + "</div>";
$(page).appendTo($.mobile.pageContainer);

请帮助我...

data-scroll="true" works fine if the page is static page, but if I add page dynamically using javascript it does not work.

My Header section is :

<link rel="stylesheet" href="css/jquery.mobile-1.0rc2.css" />
<link rel="stylesheet" href="css/jquery.mobile.scrollview.css" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.js"></script>
<script type="text/javascript" src="js/jquery.mobile-1.0rc2.js"></script>
<script type="text/javascript" src="js/jquery.easing.1.3.js"></script>
<script type="text/javascript" src="js/jquery.mobile.scrollview.js"></script>
<script type="text/javascript" src="js/scrollview.js"></script>

I also added the data-scroll attribute and set it to true using javascript, below is my code :

var pageHtml = "<div data-role='page' data-scroll='true' id=page" + pageId + " data-url=page" + pageId + ">";
var pageHeader = "<div data-role='header' data-position='fixed'><h1>" + menuItem + "</h1></div>";
var pageContent = "<div data-role='content' id='page" + pageId + "Content'></div>";
var page = pageHtml + pageHeader + pageContent + "</div>";
$(page).appendTo($.mobile.pageContainer);

Please help me...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

不念旧人 2024-12-26 05:17:07

尝试这样的事情:

$('yourScrollersId').scrollview();

我遇到了同样的问题,为我工作。

迟做总比不做好:-)

Try something like this:

$('yourScrollersId').scrollview();

I had the same problem, worked for me.

Better later than never :-)

白云悠悠 2024-12-26 05:17:07

经过长时间的研究,我发现 -

我们需要将每个滚动块的动态 HTML 加载到唯一的容器中。

例如 -

HTML

<div data-role="content" id="container">

    <div id="scrollContainer"></div>

    <div id="anotherContainer"></div>

</div>

JS

如果我们首先在“scrollContainer”上加载滚动视图,

$('#scrollContainer').html(loadHtml);
$("#scrollContainer").scrollview();
$("#scrollContainer").trigger('create');

那么下次我们需要加载到不同的容器中

$('#anotherContainer').html(loadHtml);
$("#anotherContainer").scrollview();
$("#anotherContainer").trigger('create');

- 可选< /strong>

要再次动态加载到 #scrollContainer 中,我们可以删除 &重新创建


执行第二个代码块后,

$('#scrollContainer').remove();
$('#container').append('<div id="scrollContainer"></div>');
//$('#scrollContainer').empty();  // simply making this DIV empty WILL NOT WORK, we need to REMOVE DYNAMIC CLASSES, STYLES also. So, its better to recreate the LOADCONTAINER

应该还有其他解决方案,但这个确实有效。

After a long research, what I found is-

we need to load the dynamic HTML, for each scroll block, to unique container s.

for eg.-

HTML

<div data-role="content" id="container">

    <div id="scrollContainer"></div>

    <div id="anotherContainer"></div>

</div>

JS

if we loaded a scrollview on 'scrollContainer' at first,

$('#scrollContainer').html(loadHtml);
$("#scrollContainer").scrollview();
$("#scrollContainer").trigger('create');

then next time, we need to load in a different container-

$('#anotherContainer').html(loadHtml);
$("#anotherContainer").scrollview();
$("#anotherContainer").trigger('create');

Optional

To again dynamically load into #scrollContainer, we can remove & recreate the <div>.
after executing the second code block

$('#scrollContainer').remove();
$('#container').append('<div id="scrollContainer"></div>');
//$('#scrollContainer').empty();  // simply making this DIV empty WILL NOT WORK, we need to REMOVE DYNAMIC CLASSES, STYLES also. So, its better to recreate the LOADCONTAINER

other solutions should be there, but this one really works.

追我者格杀勿论 2024-12-26 05:17:07

您需要 JQM 应用该页面 - 尝试

$(page).appendTo($.mobile.pageContainer).page();

甚至

$(page).appendTo($.mobile.pageContainer).trigger('create');

希望这有助于

更新:这是 JQM关于如何正式执行此操作的文档

You need to JQM apply that page - try

$(page).appendTo($.mobile.pageContainer).page();

or even

$(page).appendTo($.mobile.pageContainer).trigger('create');

Hope this helps

UPDATE: here's the JQM documentation on how to officially do this

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文