我正在尝试更新div的内容,但它并不总是有效。我不确定它是否与我的问题有关,但我使用的是jquery mobile。
背景:
我有一个选择菜单,用于选择位置。我还有一个按钮,用于获取有关所选位置的信息。 Ajax用于获取数据,该数据显示在我页面上的div元素中。我发现我需要单击两次按钮才能更新div元素。奇怪的是,如果我在更新div之前添加一个警报,它就可以正常工作(即我只需按一下按钮)。
代码:
$( function() {
$("#weather_submit").click(function(){
$.mobile.pageLoading();
var formData = $("#getWeatherForm").serialize();
$.ajax({
type: "POST",
url: "weather.php",
cache: false,
data: formData,
success: onSuccessWeather,
error: onError
});
return false;
});
});
function onError(data, status) {
$.mobile.pageLoading( true );
alert('error');
}
function onSuccessWeather(data, status) {
$.mobile.pageLoading( true );
//alert(data); // if I use this line of code I never have a problem (i.e. the weatherSummary div updates appropriately
data = $.trim(data);
$("#weatherSummary").html(data);
}
我最初使用我的Android EVO发现了这个问题,但我刚尝试使用firefox,它也会发生。
我怀疑这与.html()因某些原因无法正常工作有关。
有什么想法吗?
谢谢!
答案 0 :(得分:0)
尝试:
$("#page_id_name").page();
但我认为Beta 2更新中还有一种新方法:
新的“创建”事件:一次轻松增强所有小部件
虽然页面插件不再专门调用每个插件,但它 会发送一个“pagecreate”事件,大多数小部件都会使用它 自动初始化自己。只要一个小部件插件脚本 引用后,它将自动增强小部件的任何实例 它在页面上找到,就像之前一样。例如,如果选择菜单 插件被加载,它将增强它在新内容中找到的任何选择 创建页面。
现在,这个结构允许我们添加一个新的创建事件 触发任何元素,为您节省手动初始化的任务 该元素中包含的每个插件。到现在为止,如果是开发人员 通过Ajax或动态生成的标记加载到内容中 需要手动初始化所有包含的插件(listview按钮, 选择等)以增强标记中的小部件。
现在,我们方便的创建事件将初始化所有必要的插件 在该标记内,就像页面创建增强一样 过程有效。如果您要使用Ajax加载HTML块 标记(例如登录表单),您可以自动触发创建 转换它包含的所有小部件(输入和按钮) case)进入增强版本。此方案的代码为:
$( ...new markup that contains widgets... ).appendTo( ".ui-page" ).trigger( "create" );
因此,如果你更新到Beta 2尝试这样的事情(未经测试):
$("#weatherSummary").html(data).trigger( "create" );