Jquery mobile 动态加载LI';JQueryMobile 1.0中的s

Jquery mobile 动态加载LI';JQueryMobile 1.0中的s,jquery-mobile,Jquery Mobile,我刚刚将我的项目从jquerymobile 1.0a1更新到1.0版 我遇到了动态内容的问题。基于ajax搜索,我用列表项填充无序列表。以前,以下代码刷新了列表,以便正确显示所有样式: $('#myContent').find("ul").listview(); $('#myContent').find("ul").listview('refresh'); 但是,从1.0开始,这似乎不再有效。 列表将出现,但样式完全错误,并且忽略所有元素上的数据主题。 是否有人在更新过程中遇到过类似问题,并找

我刚刚将我的项目从jquerymobile 1.0a1更新到1.0版

我遇到了动态内容的问题。基于ajax搜索,我用列表项填充无序列表。以前,以下代码刷新了列表,以便正确显示所有样式:

$('#myContent').find("ul").listview();
$('#myContent').find("ul").listview('refresh');
但是,从1.0开始,这似乎不再有效。 列表将出现,但样式完全错误,并且忽略所有元素上的数据主题。 是否有人在更新过程中遇到过类似问题,并找到了解决方案

更新列表
如果向列表视图添加项目,则需要调用列表视图上的
refresh()
方法来更新样式并创建 添加的任何嵌套列表。例如:

$('#mylist').listview('refresh');
请注意,
refresh()
方法只影响附加到 列表这样做是出于性能原因。已经有任何列表项了吗 刷新过程将忽略增强的。这意味着如果 您可以更改已增强列表中的内容或属性 项目,这些将不会被反映。如果要更新列表项, 在调用refresh之前,将其替换为新标记

如果#myContent是列表视图,则可以执行以下操作:

$('#myContent').listview('refresh');
如果#myContent是页面,您可以执行以下操作:

$('#myContent').trigger('create');
创建与刷新:一个重要区别
注意创建事件和刷新方法之间有一个重要区别 这是一些小部件所拥有的。创建事件适用于增强原始数据 包含一个或多个小部件的标记。刷新方法应该是 用于已被操作的现有(已增强)小部件 以编程方式,并且需要更新UI以匹配

例如,如果您有一个页面,其中动态附加了一个新的 创建页面后,数据角色为listview属性的无序列表, 在该列表的父元素上触发create将对其进行转换 进入listview样式的小部件。如果需要更多的列表项 通过编程添加,调用listview的刷新方法 仅将这些新列表项更新为增强状态,并保留 未触及现有列表项


用以下代码替换两行代码即可实现您的目标:

 $('#myContent ul').listview('create');

希望这有帮助…

我遇到了这个问题。你把事情弄得一团糟的原因是你多次初始化和刷新元素。我注意到有两个不同的函数在运行,它们在同一个元素上调用.listview('refresh')。在我取出一个后,主题和数据恢复正常。你是否也有JS错误

编辑: 更具体地说,您在代码中的某个地方调用了两次
.listview()
,这是两次初始化。我会在加载页面之前等待运行刷新,这样您只需调用它一次

您可以做的另一件事是检查元素是否已经初始化,这样您就不会做两次。只需检查元素,或者在某些情况下检查父元素,查看类
ui列表视图是否存在

var element = $('#myContent').find('ul');    

if ($(element).hasClass('ui-listview')) {
  //Element is already initialized
  $(element).listview('refresh');
} else {
  //Element has not been initiliazed
  $(element).listview().listview('refresh');
}

仅供参考,您可以将这些事件链接为
$('#myContent')。查找('ul')。listview()。listview('refresh')

它可以通过

$('#myContent').listview('refresh');

The below snippet shows you to load data from xml and dynamically create a list view.
 function loadData()
 {
    $.ajax({
    url:"BirthdayInvitations.xml",
    dataType: "xml",
    success: function(xml) 
    {
       $(xml).find("event").each(function() 
       {
       $("#mymenu").append('<li><a href='+ "#" + ' id="a" ">' + this.textContent + '  </a> </li>'); 
       });

       $("#mymenu").listview('refresh');
    }
});
}
$('myContent')。列表视图('refresh');
下面的代码片段显示如何从xml加载数据并动态创建列表视图。
函数loadData()
{
$.ajax({
url:“birthdayinvestments.xml”,
数据类型:“xml”,
成功:函数(xml)
{
$(xml).find(“事件”).each(函数()
{
$(“#我的菜单”).append(“
  • ”); }); $(“#我的菜单”).listview(“刷新”); } }); }
    看看这是否与你的问题有关,也与这个问题有关

    在第一个示例中,我使用的是listview(“刷新”);方法,在我使用的第二个示例中
    $(文档).page(“销毁”).page()

    感谢您的回复,这或多或少是我的回复,但充其量只是加载了一些样式,尤其是填充和边距都是错误的。@jkilbride请在jsfiddle上发布您的全部代码。就像我说的,你很可能在那个元素上调用了一个双初始化。我认为Leon的答案行不通。我在绝望中尝试了它,并得到了这个错误:>没有为listview小部件实例创建这样的方法