JQuery Mobile:selectmenu(),native-menu = false,<option>,通过JS抛出添加占位符:在初始化之前无法调用listview上的方法

时间:2016-07-16 16:46:36

标签: jquery-mobile

我尝试通过JavaScript将<option data-placeholder=true>placeholder value</option>添加到现有的JQuery Mobile selectmenu()

我没有使用占位符,如JSFiddle(版本8)所示:http://jsfiddle.net/nyluje/jg5cgw76/8/

为了添加占位符,我在函数flipswitchChangesSingleSelToMultipleSel的开头添加了以下行:

targetSelect = $('body').find('select[id='+selectContainerId+']');

if($(targetSelect).find('[data-placeholder="true"]').length==0){
  phOption = document.createElement('option');
  $(phOption).attr('data-placeholder','true');
    $(phOption).text("Do a choice");
    $(targetSelect).prepend(phOption);       }

我用它更新了JSFiddle到新版本(版本9): http://jsfiddle.net/nyluje/jg5cgw76/9/

占位符&#34;做出选择&#34;确实按预期显示,但是当选择完成时,它会显示:&#34;未捕获错误:在初始化之前无法调用listview上的方法;试图调用方法&#39;销毁&#39;&#34;在调试控制台中。

我环顾四周,这似乎是一个常见问题,解决方案建议通过添加listview().listview('refresh')来解决它。所以我试图抓住<ul>元素:<ul class="ui-selectmenu-list ui-listview" id="select-menu" role="listbox" aria-labelledby="select-button">元素并将其应用于listview().listview('refresh'),但它不起作用。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

解决了我的问题,我已经更新了JSFiddle(第10版):http://jsfiddle.net/nyluje/jg5cgw76/10/

我添加了:selectmenu() 之前有关占位符的代码,<{1}} 之后

selectmenu('refresh')