Jquery mobile listview - 检查初始化是不是完成
Posted
技术标签:
【中文标题】Jquery mobile listview - 检查初始化是不是完成【英文标题】:Jquery mobile listview - check initialization is completeJquery mobile listview - 检查初始化是否完成 【发布时间】:2012-03-18 14:10:04 【问题描述】:我已经把我的方式编码到了一个角落。
我需要在列表上调用listview("refresh")
,但是在我调用刷新方法时它可能尚未初始化。
有没有办法检查组件是否已经初始化?
这是我得到的错误:
无法在初始化之前调用列表视图上的方法
【问题讨论】:
一些示例代码会很好,jsfiddle.net 这就是模块化开发Phill的问题,在jsfiddle中很难产生相同的场景。我在加载的模块上调用一个方法,不知道列表视图是否已初始化。这将取决于用户连接的速度。我暂时通过使用标志解决了它。我只是认为可能有一种方法可以调用 listview 组件并检查其状态。 【参考方案1】:当一个listview
小部件被初始化时,它被赋予了ui-listview
类,所以我们可以测试这个类是否已经被初始化:
//select the listview
var $myUL = $('#my-ul-element');
//add a list-item to the listview
$myUL.append('<li>I\'m New!</li>');
//check if the listview has the ui-listview class
if ($myUL.hasClass('ui-listview'))
//this listview has already been initialized, so refresh it
$myUL.listview('refresh');
else
//this listview has not yet been initialized, so it gets initialized
$myUL.listview();//or you can use .trigger('create');
这应该有助于缓解您遇到的错误。
此外,如果元素具有[class]
,.hasClass('[class]')
函数将返回 true
/false
:http://api.jquery.com/hasClass
【讨论】:
宾果游戏。很好的答案-谢谢,只是希望他们不要更改班级名称。 :)【参考方案2】:试试
$list.listview();
$list.listview('refresh');
【讨论】:
【参考方案3】:对我来说,这条消息的解决方案是将data-role="listview"
添加到我的ul
元素中。然后我可以在我的事件处理程序中使用方法.listview('refresh')
。
【讨论】:
【参考方案4】:你可以简单地创建一个全局变量
var is_mobile_init = false;
在脚本的顶部。然后在包含 jquery mobile 后将其设置为 true。
然后在刷新写入之前,
if (is_mobile_init)
$myUL.listview('refresh');
这样,您不需要跟踪所有不同的类,而且很直观
【讨论】:
以上是关于Jquery mobile listview - 检查初始化是不是完成的主要内容,如果未能解决你的问题,请参考以下文章
Jquery Mobile + Phonegap 提升 listview 性能
点击事件上的 jQuery Mobile listview 小部件不会为 Mobile 触发
添加 ClickListener JQuery Mobile ListView