加载新页面后未呈现文本 - JQuery Mobile

发布于 2024-12-22 11:59:04 字数 478 浏览 0 评论 0原文

我有一个程序,给出一个 SQL 语句(使用 HTML5-SQL 的浏览器数据库),它填充我的 jquery 移动页面中的一组字段。 SQL 语句根据通过 url 传递的 ID 进行更改。因此,当单击按钮/链接时,会使用不同的参数值调用同一页面:index.html?id=545。

虽然第一页无缝加载,但当我单击下一页的链接时,对象(页面、按钮、链接、div)显示,但这些对象内的文本不显示。

我正在使用 $('div').live('pageshow',function(event, ui){ 事件来触发执行以下操作的事件:

$("#title").text(Title);
$("#date").text(mdate);

当我打印 Title 的值时和 mdate 在 Chrome 调试器的控制台中,它显示了正确的值,我不知道为什么相同的文本没有显示在按钮和标签中,

谢谢

I have a program that given an SQL statement (browser database using HTML5-SQL), it populates a set of field in my jquery mobile page. The SQL statement is changed based on an ID passed through the url. So when a button/link is clicked, the same page is called with a different parameter value: index.html?id=545.

Although the first page load seamless, when I click the link to the next page, the objects (page, buttons, link, div) show, but the text inside these objects doesn't show up.

I am using the $('div').live('pageshow',function(event, ui){ event in order to trigger the events of doing the following:

$("#title").text(Title);
$("#date").text(mdate);

When I print the value of Title and mdate in the console of Chrome debugger, it shows the right value. I don't know why the same text doesn't show in the buttons and labels.

Can anybody help me with this.

Thanks

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

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

发布评论

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

评论(1

枫以 2024-12-29 11:59:04

使用 jQM 时,您需要刷新控件。以下是文档:

刷新表单元素
在 jQuery Mobile 中,一些增强的表单控件只是简单地设置样式(输入),但其他控件是自定义的
控件(选择、滑块)由以下控件构建并与其保持同步
本机控制。以编程方式更新表单控件
JavaScript,先操作原生控件,然后使用刷新
方法告诉增强控件更新自身以匹配新的
状态。以下是如何更新常见表单控件的一些示例,
然后调用刷新方法:

复选框:

$("input[type='checkbox']").prop("checked",true).checkboxradio("refresh");

单选:

$("input[type='radio']").prop("checked",true).checkboxradio("refresh");

选择:

var myselect = $("#selectfoo");
myselect[0].selectedIndex = 3;
myselect.selectmenu("refresh");

滑块:

$("input[type='range']").val(60).slider("refresh");

翻转开关(它们使用slider):

var myswitch = $("#selectbar");
myswitch[0].selectedIndex = 1;
myswitch.slider("refresh");

如果这是您需要的页面,请尝试以下操作:

增强新标记
页面插件调度 pagecreate 事件,大多数小部件使用该事件来自动初始化自身。只要
当引用小部件插件脚本时,它会自动增强
它在页面上找到的小部件的任何实例。

但是,如果您在客户端生成新的标记或通过以下方式加载内容
Ajax并将其注入到页面中,可以触发create事件
处理其中包含的所有插件的自动初始化
新的标记。这可以在任何元素上触发(甚至是页面
div 本身),省去了手动初始化每个插件的任务
(列表视图按钮、选择等)。

例如,如果加载了 HTML 标记块(例如登录表单)
通过Ajax,触发create事件自动变换
它包含的所有小部件(在本例中为输入和按钮)到
增强版本。此场景的代码为:

$( ...new markup that contains widgets... ).appendTo( ".ui-page" ).trigger( "create" );

When using jQM you need to refresh the controls. Here are the docs:

Refreshing form elements
In jQuery Mobile, some enhanced form controls are simply styled (inputs), but others are custom
controls (selects, sliders) built from, and kept in sync with, the
native control. To programmatically update a form control with
JavaScript, first manipulate the native control, then use the refresh
method to tell the enhanced control to update itself to match the new
state. Here are some examples of how to update common form controls,
then call the refresh method:

Checkboxes:

$("input[type='checkbox']").prop("checked",true).checkboxradio("refresh");

Radios:

$("input[type='radio']").prop("checked",true).checkboxradio("refresh");

Selects:

var myselect = $("#selectfoo");
myselect[0].selectedIndex = 3;
myselect.selectmenu("refresh");

Sliders:

$("input[type='range']").val(60).slider("refresh");

Flip switches (they use slider):

var myswitch = $("#selectbar");
myswitch[0].selectedIndex = 1;
myswitch.slider("refresh");

if it's the page you need, try this:

Enhancing new markup
The page plugin dispatches a pagecreate event, which most widgets use to auto-initialize themselves. As long
as a widget plugin script is referenced, it will automatically enhance
any instances of the widgets it finds on the page.

However, if you generate new markup client-side or load in content via
Ajax and inject it into a page, you can trigger the create event to
handle the auto-initialization for all the plugins contained within
the new markup. This can be triggered on any element (even the page
div itself), saving you the task of manually initializing each plugin
(listview button, select, etc.).

For example, if a block of HTML markup (say a login form) was loaded
in through Ajax, trigger the create event to automatically transform
all the widgets it contains (inputs and buttons in this case) into the
enhanced versions. The code for this scenario would be:

$( ...new markup that contains widgets... ).appendTo( ".ui-page" ).trigger( "create" );
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文