Jquery mobile - 更改后选择菜单修改值

时间:2014-06-19 08:14:33

标签: jquery select mobile

我正在创建我的新应用程序,它是一个jQuery移动框架应用程序。我使用ajax加载多个带选项的选项。

例如,我在代码中创建了一个元素:

var select = $('<select name="someSelect" data-placeholder="false" class="select-additional" data-native-menu="false" />');

然后我有一个ajax调用,我将对象保存到var ajaxItems,我创建一个循环并将选项添加到select。

for(var i in ajaxItems){
   val option = $('<option val="'+ajaxItems[i].val+'">'+ajaxItems[i].val+' Days</option>');
   select.append(option);
}

现在,一切正常,jQuery使用选择渲染页面,看起来不错。

但我有一个问题:

我想做类似的事情:当用户点击选择时,必须在select中将选项值设置为字符串,默认选项的文本已设置,但我想要一个值,例如,如果用户点击选项:< / p>

<option value="1">1 day</option>

我想将选择字符串设为1,而不是1天,因为我有一个非常小的选择输入,而单位(天)并不重要......

jQuery移动呈现代码:

<div class="ui-select">
    <a href="#select-27-listbox" role="button" id="select-27-button" aria-haspopup="true" class="ui-btn ui-btn-a ui-corner-all ui-shadow" data-rel="popup"><span class="select-additional">4 Tage</span></a>
    <select data-native-menu="false" data-id="4084" data-icon="false" data-theme="a" class="select-additional" data-placeholder="false" tabindex="-1">
       <option value="0">0 </option>
       <option value="1">1 Tag</option>
       <option value="2">2 Tage</option>
       <option value="3">3 Tage</option>
       <option value="4">4 Tage</option>
       <option value="5">5 Tage</option>
    </select>
</div>

我试图做出类似的事情:

$('ui-select').change(function(
   $(this).prev().find(span.select-additional).text($(this).val());
));

但是它没有在标签上做出改变,我有90%的确定性,我做得很好,在日志对象$(this).prev().find(span.select-additional).text()时,它向我显示一个值,但在更改前的值!例如,如果我拿起1,它显示0,那么当我拿起2时,它显示1。

我认为问题是:我试图改变价值,但在jQuery mobile之前,jQuery mobile会覆盖我的文字...

我知道这是可能的,因为我在另一个jQuery移动页面上看到了它,但是在jQuery设置值之后我需要一些回调...或者有些延迟?

1 个答案:

答案 0 :(得分:0)

好的,我找到了答案。 我看到问题出现在其他页面上,首先一切正常,我的方法产生效果。 但在另一个页面上,没有任何效果,页面上的make代码创建的解决方案:

$(document).on("pagecreate", function () {
            $('select').change(function () {
                var value = $(this).val();
                var element = $(this);
                element.prev().find('.select-additional').text(value);
            });
});