2013-04-30 33 views
2

您好,我使用JQM 1.3和JQuery 1.9.1 ...我試圖得到一個動態的selectmenu沒有解決方案工作。JQuery Mobile 1.3選擇菜單動態刷新

首先我在pagebeforeshow事件中用createDocument(div ...)和.setAttribute(id,...)創建一個selectmenu。然後我用了很多的變化第一線,第二線和組合的..

$("#select-keywords-list").selectmenu(); 
$("#select-keywords-list").selectmenu("refresh"); 

毫無效果卻爲我..

後,我加入它,我聽它在domready中($(#頁).ready)用於更改事件。 在瀏覽器中,它工作得很好,但在手機上,我不能讓它工作。希望可以有人幫幫我。

我也試過本機菜單真假..

謝謝

發作

回答

2

工作例如:http://jsfiddle.net/Gajotres/dEXac/

$(document).on('pagebeforeshow', '#index', function(){  
    // Add a new select element  
    $('<select>').attr({'name':'select-choice-1','id':'select-choice-1','data-native-menu':'false'}).appendTo('[data-role="content"]'); 
    $('<option>').html('Select option!').appendTo('#select-choice-1'); 
    $('<option>').attr({'value':'1'}).html('Value 1').appendTo('#select-choice-1'); 
    $('<option>').attr({'value':'2'}).html('Value 2').appendTo('#select-choice-1');  
    // Enhance new select element 
    $('select').selectmenu(); 

    $(document).on('change', '#select-choice-1', function(){  
     alert($(this).find("option:selected").text()); 
    });   
}); 

一件事,不要使用文件隨着jQuery Mobile準備就緒,他們不能一起正常工作。而是使用pageinit事件。如果您想了解更多關於它看看這裏:jQuery Mobile: document ready vs page events

+0

嗨,感謝您的快速響應,我在您的應用程序中嘗試了您的代碼......它不工作,甚至在我的工作中owser,我開發了一個帶有jqm和phonegap的應用程序... – user1921446 2013-04-30 12:26:36

+0

我嘗試了更多的東西,如果發現問題,我會寫在這裏 – user1921446 2013-04-30 12:27:24

+0

您使用的瀏覽器是什麼?此代碼已在桌面瀏覽器,iPad和Android 4.1.1上進行了測試。 – Gajotres 2013-04-30 12:46:04

0

我知道有一個模板引擎公司也許更容易,但我想這樣

  function renderItemsKeywords(results) { 
     var elementRoot = document.createDocumentFragment(); 
     var elementDiv = document.createElement("div"); 
     elementDiv.setAttribute("data-role", "fieldcontain"); 

     var elementL = document.createElement("label"); 
     elementL.setAttribute("for", "select-keywords-list"); 
     elementL.setAttribute("class", "select"); 
     elementL.appendChild(document.createTextNode("Wähle Eintrag:")); 

     var elementSel = document.createElement("select"); 
     elementSel.setAttribute("name", "select-keywords-list"); 
     elementSel.setAttribute("id", "select-keywords-list"); 
     elementSel.setAttribute("data-native-menu", "true"); 

     var elementOptD = document.createElement("option"); 
     elementOptD.setAttribute("data-placeholder", "true"); 
     elementOptD.appendChild(document.createTextNode("Wähle Eintrag"));   
     elementSel.appendChild(elementOptD); 

     var allKeywords = $().checkKeywords(results); 

     $.each(allKeywords, function(i, item) { 
      var elementOptAll = document.createElement("option"); 
      elementOptAll.setAttribute("value", item); 
      elementOptAll.appendChild(document.createTextNode(item)); 
      elementSel.appendChild(elementOptAll); 
     }); 

     //alert(elementSel.length()); 

     elementDiv.appendChild(elementL); 
     elementDiv.appendChild(elementSel); 

     var elementDivKey = document.createElement("div"); 
     elementDivKey.setAttribute("id", "keylist"); 

     elementRoot.appendChild(elementDiv); 
     elementRoot.appendChild(elementDivKey); 

     return elementRoot; 
    }; 

比其它部分

      case 'keywords': 

       html = renderItemsKeywords(itemData); 

       $header.find("h1").html("Title"); 
       $content.html(html); 
       $page.page(); 
       $footer.find(":jqmData(role=navbar)").navbar(); 
       $content.find(":jqmData(role=listview)").listview(); 


       $("#select-keywords-list").selectmenu(); 
       $("#select-keywords-list").selectmenu("refresh"); 
       break; 
      } 
      $.mobile.changePage($(this)); 

希望你明白我在做什麼

+0

問題是,我得到了正確的方式呈現selectmenu,但如果我點擊選擇菜單它不會打開..如果我使用數據本地菜單虛假其開放,但真正越野車只有當我打7/8次... – user1921446 2013-04-30 13:42:28

相關問題