1

我有多个<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/>是否因为不在视图中的 s 引发了异常?

4

1 回答 1

0

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

于 2012-08-15T19:20:14.560 回答