詳解關于JQuery Mobile使用心得
Jquery Mobile使用心得是本文要介紹的內容,主要是來了解Jquery Mobile使用指南的一個指引,具體內容來看本文詳解。在Jquery Mobile的使用過程中,動態添加元素后css丟失。因為頁面標簽首先經過jquery mobile-10a2minjs的處理,添加了許多標簽,然后再用css布局,并且給出了一種解決方法:動態加載jquery mobile-10a2minjs。
但是經過測試,上面這種方法并不好。首先異步加載造成用戶可以看到沒有加載JS的頁面,并且JS加載過一次后,如果再要動態添加新元素的話,就意味著多次加載JS文件,顯示問題先不說,這效率也堪憂。
因此必須提出新方法。
新方法有兩個,調用JS的順序與普通方式相同,都別動態添加JS。
一是將按照jquery mobile-10a2minjs處理過后的樣式,來動態添加元素。jquery mobile-10a2minjs處理過后的樣式可以通過chrome瀏覽器的審查元素功能看到。這個辦法的缺點很明顯:添加了很多奇怪的標簽。
例如:
一般情形下動態添加元素:
- onelist = "<li><img src='stylesheets/images/file_icon/" + SwitchIcon($obj[i]wext) + "' class='ui-li-icon'/><a href='#' ";
- if($obj[i]wtype == "dir"){//文件夾
- onelist += "onclick=\"GetShowMyList(\'" + $obj[i]wid + "\')\">" + $obj[i]wname +"</a>
- <span class='ui-li-count'>" + CountSize($obj[i]wsize) + "</span><a href='dialog/operatefilehtml' >操作</a></li>";
}else{//非文件夾直接下載
- onelist += "onclick=\"download(\'" + $obj[i]wid + "\')\">" + $obj[i]wname +"</a><span class='ui-li-count'>" + CountSize($obj[i]wsize) + "
- </span>
- <a href='dialog/operatefilehtml' >
操作</a></li>";
按照jquery mobile-10a2minjs處理過后的樣式,來動態添加元素:
- onelist = "<li class='ui-li-has-icon ui-btn ui-btn-icon-right ui-li ui-li-has-alt ui-btn-up-c' role='option' tabindex='0' data-theme='c'>" +
- "<div class='ui-btn-inner'>" +
- "<div class='ui-btn-text'>" +
- "<img class='ui-li-icon ui-li-thumb' src='stylesheets/images/file_icon/" + SwitchIcon($obj[i]wext) + "' />" +
- "<a class='ui-link-inherit' href='#' ";
- if($obj[i]wtype == "dir"){//文件夾
- onelist += "onclick=\"GetShowMyList(\'" + $obj[i]wid + "\')\">" + $obj[i]wname +"</a>" +
- "<span class='ui-li-count ui-btn-up-c ui-btn-corner-all'>" + CountSize($obj[i]wsize) + "</span>" +
- "<a class='ui-li-link-alt ui-btn ui-btn-up-c' href='dialog/operatefilehtml' title='操作' data-theme='c'>" +
- "<span class='ui-btn-inner'>" +
- "<span class='ui-btn-text'></span>" +
- "<span class='ui-btn ui-btn-up-d ui-btn-icon-notext ui-btn-corner-all ui-shadow' data-theme='d'>" +
- "<span class='ui-btn-inner ui-btn-corner-all'>" +
- "<span class='ui-icon ui-icon-gear ui-icon-shadow'></span>" +
- "</span>" +
- "</span>" +
- "</span>" +
- "</a></div></div></li>";
- }else{//非文件夾直接下載
- onelist += "onclick=\"download(\'" + $obj[i]wid + "\')\">" + $obj[i]wname +"</a>" +
- "<span class='ui-li-count ui-btn-up-c ui-btn-corner-all'>" + CountSize($obj[i]wsize) + "</span>" +
- "<a class='ui-li-link-alt ui-btn ui-btn-up-c' href='dialog/operatefilehtml' title='操作' data-theme='c'>" +
- "<span class='ui-btn-inner'>" +
- "<span class='ui-btn-text'></span>" +
- "<span class='ui-btn ui-btn-up-d ui-btn-icon-notext ui-btn-corner-all ui-shadow' data-theme='d'>" +
- "<span class='ui-btn-inner ui-btn-corner-all'>" +
- "<span class='ui-icon ui-icon-gear ui-icon-shadow'></span>" +
- "</span>" +
- "</span>" +
- "</span>" +
- "</a></div></div></li>";
- }
- }
瞧這多了多少代碼??!不過這也是JQuery Mobile UI前端實際最終處理的代碼量。
方法二:refresh
其實JQuery Mobile 中早就封裝了refresh方法。你只需要對新添加的元素節點refresh一下就可以了。
例如: $("#節點名")listview("refresh");
還是剛才那個函數,采用普通的動態添加元素方法,最后加個refresh就搞定了。
- function ShowMyListOK(){//處理根目錄文件列表函數
- if( $glb_result == ""){
- alert("返回為空!請重新登錄!");
- }else{
- //alert("成功: "+$glb_result);
- $("#wlist")empty();
- var $obj = jQueryparseJSON($glb_result);
- var onelist = "";
- $each( $obj, function(i, n){
- if( $obj[i]wname != ""){
- onelist = "<li><img src='stylesheets/images/file_icon/" + SwitchIcon($obj[i]wext) + "' class='ui-li-icon'/><a href='#' ";
- if($obj[i]wtype == "dir"){//文件夾
- onelist += "onclick=\"GetShowMyList(\'" + $obj[i]wid + "\')\">" + $obj[i]wname +"</a>
- <span class='ui-li-count'>" + CountSize($obj[i]wsize) + "</span><a href='dialog/operatefilehtml' >操作</a></li>";
- }else{//非文件夾直接下載
- onelist += "onclick=\"download(\'" + $obj[i]wid + "\')\">" + $obj[i]wname +"</a>
- <span class='ui-li-count'>" + CountSize($obj[i]wsize) + "</span><a href='dialog/operatefilehtml' >操作</a></li>";
- }
- $("#wlist")append(onelist);
- }
- });
- $("#wlist")listview("refresh");
- }
- }
這個方法很好,但是為什么沒有早點發現呢?因為jquery mobile-10a2js的源碼確實很不好讀。本人JS水平有限,看到里面內容后,以為調用里面方法必須創建對象,誤解了JQuery的原意。試了半天才搞出來,必須發帖紀錄一下這個小成功。
小結:詳解關于JQuery Mobile使用心得的內容介紹完了,希望通過本文的學習能對你有所幫助!