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 触发

jquery mobile中的listview搜索

添加 ClickListener JQuery Mobile ListView

JQuery Mobile - ListView - 获取选中项

jQuery Mobile:listview('refresh') 应该进入哪个事件?