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

时间:2011-12-21 06:24:51

标签: javascript jquery html5 dom jquery-mobile

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

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

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

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

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

任何人都可以帮助我。

由于

1 个答案:

答案 0 :(得分:2)

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

  

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

<强>复选框:

$("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");

翻转开关(他们使用滑块):

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

如果它是您需要的页面,请尝试:

  

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

     

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

     

例如,如果加载了一个HTML标记块(比如一个登录表单)   通过Ajax,触发create事件自动转换   它包含的所有小部件(在这种情况下为输入和按钮)   增强版本。此方案的代码为:

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