jQuery Mobile:更新导航栏时替代 .trigger('create') 或 .page()?
Posted
技术标签:
【中文标题】jQuery Mobile:更新导航栏时替代 .trigger(\'create\') 或 .page()?【英文标题】:jQuery Mobile: alternative of .trigger('create') or .page() when updating navbar?jQuery Mobile:更新导航栏时替代 .trigger('create') 或 .page()? 【发布时间】:2012-03-02 03:18:12 【问题描述】:我有以下 jQuery Mobile html 代码,导航栏的内容是使用 javascript 设置的。 jQuery mobile 在静态设置导航栏时对其进行样式设置,但是当您稍后使用 javascript 设置它的内容 (html) 时,您必须做一些额外的工作才能使其正常工作:
<div data-role="header">
<h1 id="title">App</h1>
</div><!-- /header -->
<div data-role="content" id="content">
<p>Loading...</p>
</div><!-- /content -->
<div data-role="footer" data-position="fixed">
<div data-role="navbar" id="navbar">
<ul id="menu">
</ul>
</div>
</div><!-- /footer -->
</div><!-- /page -->
trigger('create');
一般用于解决使用javascript/ajax设置时无样式标记的问题。 然而,它似乎只适用于data-role="content"
而不适用于#navbar
。下面的脚本应该可以工作,但菜单没有样式...
$(function()
$("#menu").html("<li><a href='#'>Test Styling</a></li>").trigger('create');
);
任何想法如何解决这个问题?我试过page();
和.listview('refresh');
没有结果。
【问题讨论】:
【参考方案1】:在追加列表项后尝试调用navbar
方法:
$(function()
$("#menu").html("<li><a href='#'>Test Styling</a></li>");
$("#navbar").navbar();
);
编辑: 您也可以尝试动态创建导航栏:
var footer = $("#footer-id");
var navBar = $("div",
"data-role":"navbar",
"html":"<ul><li><a href='#'>Test Styling</a></li></ul>"
).appendTo(footer).navbar();
【讨论】:
我明天早上会再试一次,但现在它似乎引发了一个错误:no such method 'refresh' for navbar widget
在执行$("#navbar").navbar("refresh");
和$("#navbar").navbar();
时似乎没有效果。
谢谢,它确实有效。 JavaScript 执行的具体时刻很重要!显然必须在 DOM 加载后运行它..
嗨,你还有什么需要做的吗?这对我不起作用,它不会加载动态创建的 元素的类。以上是关于jQuery Mobile:更新导航栏时替代 .trigger('create') 或 .page()?的主要内容,如果未能解决你的问题,请参考以下文章