2012-02-29 67 views
13

我已經編碼到一個角落。jquery移動列表查看 - 檢查初始化完成

我需要在列表上調用listview("refresh"),但它可能沒有在我調用刷新方法的位置初始化。

有沒有辦法檢查組件是否已經初始化?

這是錯誤我得到:

不能調用之前列表視圖的方法來初始化

+0

一些示例代碼將是很好,HTTP:// jsfiddle.net – 2012-02-29 04:06:59

+0

這就是模塊化開發Phill的問題,在jsfiddle中生成相同的場景非常困難。我在加載的模塊上調用一個方法,不知道列表視圖是否已被初始化。這將取決於用戶連接的速度。我已經通過使用標誌解決了它。我只是覺得可能有辦法調用listview組件並檢查它的狀態。 – Chin 2012-02-29 04:30:09

回答

21

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'); 
} 

這應該有助於緩解您遇到的錯誤。

此外,.hasClass('[class]')函數返回true/false如果該元素具有[class]http://api.jquery.com/hasClass

+0

賓果。好的答案 - 謝謝,只是希望他們不要改變班級名稱。 :) – Chin 2012-02-29 04:57:59

3

嘗試

$list.listview(); 
$list.listview('refresh'); 
+0

爲什麼這是低調的?該方法工作正常。 – Brad 2014-01-19 00:46:43

0

對我來說,要解決這個消息是添加data-role="listview"ul元素。然後我可以在我的事件處理程序中使用方法.listview('refresh')

-1

您可以簡單地創建一個全局變量

var is_mobile_init = false;

位於腳本的頂部。然後在包含jquery mobile後將其設置爲true。

然後刷新寫之前,

if (is_mobile_init) 
    $myUL.listview('refresh'); 

這樣,你不需要把所有的各種類的軌道,這是直觀的