我正在使用jQuery Mobile创建一个站点,在索引页面中我放置了一个搜索表单.我为ajax帖子挂了提交事件.当ajax成功获得资源时
(html,< ul> …< / ul>),放置在目标容器中,然后触发create事件以增强视图.这在第一次工作正常.当我点击返回索引页面并再次搜索时,我得到了一个没有增强的原始列表视图,谁能告诉我为什么? ps:我尝试了很多方法,但问题越来越多,官方文件太差了.
$(document).bind('pageinit',function(){
$("#search").submit(function(){
var searchdata = $("#search").serialize();
$.ajax({
'type':"POST",
'url':"/server/jnulib.php?action=search",
'data':searchdata,
'success':function(data){
$("#searchresultfield > ul").remove();
$("#searchresultfield").html(data).find('ul').trigger('create');
try{
$("#searchresultfield > ul").listview('refresh');
}catch(e){
}
$.mobile.changePage("#searchresult");
//$("div[data-role='header'] > a").
}
});
return false;
});
});
编辑:测试网址:http://ijnu.sinaapp.com
另一个问题:第二个ajax请求失败,浏览器直接导航到ajax目标.
最佳答案 您可以尝试更改:
$("#searchresultfield").html(data).find('ul').trigger('create');
至:
$("#searchresultfield").html(data).find('ul').listview().listview('refresh');
每当您追加或删除需要刷新的元素时,如果删除整个列表,则需要重新初始化它.
如果它不可见,我也遇到了listview(‘refresh’)渲染不正确的问题.
$(document).on('pageshow','div',function(event, ui){
if($("#searchresultfield > ul").is(":visible")) $("#searchresultfield > ul").listview('refresh');
});