我想要同步多个<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/>
抛出了异常吗?
答案 0 :(得分:0)
我认为你回答了自己的问题,refresh
方法是为了刷新一个已经初始化的小部件(在这种情况下是selectmenu
),在你的情况下,选择的初始化是其他页面上尚未进行(增强发生在pageinit event
),因此您需要先将其初始化,然后通过调用.selectmenu()
手动执行此操作。