使用jquery(mobile)更新多个select标签

时间:2012-08-15 19:12:47

标签: javascript jquery jquery-mobile

我想要同步多个<select/>个标签,以便在更改一个时,它们都会发生变化。它们都是jquery移动页面的导航栏标题的一部分。我的选择器是:$("header select")

我像这样挂了change事件:

var statusselect = $("header select");

var statusevent = function (event) {

    statusselect.off("change");

    statusselect.val(event.target.value);

    statusselect.on("change", statusevent);

    try {
        statusselect.selectmenu("refresh");
    } 
    catch(e) {

    } 
};

statusselect.on("change", statusevent);

这只有在我有try/catch声明的情况下才有效。如果我取出try/catch及其内部代码,<select/>的文本仅在第一次更改后更新。之后,事件被正确触发并且所有传递的值都是正确的,但文本永远不会更新(显示正确选择的选项)。

如果我取出try/catch并离开statusselect.selectmenu("refresh"),则会抛出异常,说明该对象尚未初始化。

所以我一直在挠头:为什么我需要抛出一个异常以便<select/>更改其文本?是因为对于不在视图中的<select/>抛出了异常吗?

1 个答案:

答案 0 :(得分:0)

我认为你回答了自己的问题,refresh方法是为了刷新一个已经初始化的小部件(在这种情况下是selectmenu),在你的情况下,选择的初始化是其他页面上尚未进行(增强发生在pageinit event),因此您需要先将其初始化,然后通过调用.selectmenu()手动执行此操作。