2012-03-14 85 views
1

使用jQueryMobile,当我改变选择小部件的内容,然后调用'刷新'时,所选选项的文本不会改变。这里是场景...jquery mobile选择的选项不更新'刷新'

“选择”小部件已经存在于页面div中。当用户转到该屏幕时,这些选项将根据他们选择转到该页面的按钮动态创建。这个选项列表是根据

$('#searchReasonList').append(optionList)

第一次进入新页面一切正常。当他们离开并回来,我做

$('#searchReasonList').empty()
然后我建立正确的选项列表,并执行相同的追加和呼叫:
$('#searchReasonList').selectmenu('refresh',true)

本机选择确实刷新,我可以从选项中进行选择。但是,所选选项不显示。只有占位符被看到。

要显示的增强型标记:

<div class="ui-select"> 
    <div class="ui-btn ui-btn-icon-right ui-btn-corner-all ui-shadow ui-btn-up-c" data-theme="c"> 
    <span class="ui-btn-inner ui-btn-corner-all"> 
     <span class="ui-btn-text">Select Reason</span> 
     <span class="ui-icon ui-icon-arrow-d ui-icon-shadow"></span> 
    </span> 

    <select id="searchReasonList" name="searchReasonList" data-placeholder="true"> 
     <option value="">Select Reason</option> 
     <option value="1">Option 1</option> 
     <option value="2">Option 2</option> 
    </select> 
    </div> 
</div> 

这是一个与class='ui-btn-text'跨度标签未与所选择的选项的标签更新。它只是保持“搜索原因”,这是我占位符的标签。

还有什么需要做的吗?

+0

你使用的是什么版本的jQuery Mobile? – Jasper 2012-03-14 20:02:36

+0

1.0.1,这是目前最新的稳定版本。 – dlgrasse 2012-03-14 20:04:01

回答

6

使用jQuery 1.0.1(目前最新的稳定版本),您可以使用.selectmenu('refresh')来刷新选择小部件。

$('select').empty().append('<option value="foo">Bar</option>').selectmenu('refresh'); 

这里是一个演示:http://jsfiddle.net/4Thzt/

当您使用$('select').selectmenu('refresh', true);(注意, true),你是迫使小部件,不仅刷新,但重建,这将始终显示占位符文本。 来源:http://jquerymobile.com/demos/1.1.0-rc.1/docs/forms/selects/methods.html

+0

你的jsfiddle页面肯定有效。但不管我是否包含第二个“真实”参数,我选择的选项都不显示。我可以看到的唯一区别是我再次进入页面。我的按钮的onclick处理程序创建选项列表,清空select,将选项列表附加到select,然后调用$ .mobile.changePage,然后调用selectmenu上的刷新。没有什么复杂的事情发生这个跨度在我的情况下并没有得到更新。 – dlgrasse 2012-03-14 20:19:30

+0

@dlgrasse你有链接到有问题的网站? – Jasper 2012-03-14 20:25:03

+0

不 - 对不起。但你提示我创建我的场景的简单版本,并验证我没有其他任何事情正在破坏行为。 – dlgrasse 2012-03-14 20:27:13