Jquery mobile 动态加载LI';JQueryMobile 1.0中的s
我刚刚将我的项目从jquerymobile 1.0a1更新到1.0版 我遇到了动态内容的问题。基于ajax搜索,我用列表项填充无序列表。以前,以下代码刷新了列表,以便正确显示所有样式: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开始,这似乎不再有效。 列表将出现,但样式完全错误,并且忽略所有元素上的数据主题。 是否有人在更新过程中遇到过类似问题,并找
$('#myContent').find("ul").listview();
$('#myContent').find("ul").listview('refresh');
但是,从1.0开始,这似乎不再有效。
列表将出现,但样式完全错误,并且忽略所有元素上的数据主题。
是否有人在更新过程中遇到过类似问题,并找到了解决方案
更新列表如果向列表视图添加项目,则需要调用列表视图上的
refresh()
方法来更新样式并创建
添加的任何嵌套列表。例如:
$('#mylist').listview('refresh');
请注意,refresh()
方法只影响附加到
列表这样做是出于性能原因。已经有任何列表项了吗
刷新过程将忽略增强的。这意味着如果
您可以更改已增强列表中的内容或属性
项目,这些将不会被反映。如果要更新列表项,
在调用refresh之前,将其替换为新标记
$('#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小部件实例创建这样的方法