Javascript jquery移动触发器';创建';除第一次外,不工作
我正在使用jQuery Mobile创建一个站点,在索引页面中我在这里放置了一个搜索表单。我钩住了ajax帖子的提交事件。当ajax成功获得资源时 (html,Javascript jquery移动触发器';创建';除第一次外,不工作,javascript,jquery,ajax,jquery-mobile,Javascript,Jquery,Ajax,Jquery Mobile,我正在使用jQuery Mobile创建一个站点,在索引页面中我在这里放置了一个搜索表单。我钩住了ajax帖子的提交事件。当ajax成功获得资源时 (html,..),放置在目标容器中,然后触发用于增强视图的创建事件。这项工作第一次做得很好。当我点击返回索引页面并再次搜索时,我得到了一个未经增强的原始listview,谁能告诉我为什么?ps:我尝试了很多方法,但是问题越来越多,官方文件太差了 $(document).bind('pageinit',function(){ $("#
..
),放置在目标容器中,然后触发用于增强视图的创建事件。这项工作第一次做得很好。当我点击返回索引页面并再次搜索时,我得到了一个未经增强的原始listview,谁能告诉我为什么?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;
});
});
编辑:测试Url:
另一个问题:第二个ajax请求失败,浏览器直接导航到ajax目标。您可以尝试更改:
$("#searchresultfield").html(data).find('ul').trigger('create');
致:
每当追加或删除需要刷新的元素时,如果删除整个列表,则需要重新初始化它
此外,如果listview(“刷新”)不可见,我也会遇到不正确渲染的问题
$(document).on('pageshow','div',function(event, ui){
if($("#searchresultfield > ul").is(":visible")) $("#searchresultfield > ul").listview('refresh');
});
尝试:
而不是
$("#searchresultfield > ul").remove();
我认为问题在于jquery mobile会将所有页面加载到一个大页面中,尽管所有页面都来自不同的文件,但导航是基于此页面中的不同点,因此,当您第一次进入该页面时,您访问的页面被视为已创建,但当单击“后退”按钮并离开该页面时,该页面仍被视为已创建,因此事件不会再次触发 我用的是:
$('#oppList').live('pageshow',function(event){
getList();
});
其中#opplist是我刚刚加载的页面的data role=“page”的id,这与第一次加载页面还是之后加载页面无关,因为每次显示页面时都会触发事件
看
另请参见此处了解更多信息
希望这有帮助 处理提交事件后,您可能应该尝试将其解钩。当你回到以前的页面时,再次启动它。多次添加EventHandler会导致很多问题。对我来说,
.trigger('create')如果应用于具有data role=“page”
比如说
HTML代码
<div data-role="page" id="somePage">
...
</div>
希望有帮助您的站点是一个HTML文件吗?如果没有,则每次初始化新页面时,您的事件处理程序都将运行,重新绑定$(“#搜索”)。每次提交(…
事件处理程序。此外,我们可以看到的版本链接也会很有帮助。
$('#oppList').live('pageshow',function(event){
getList();
});
<div data-role="page" id="somePage">
...
</div>
$('#somePage').trigger('create');