TL; DR :这个小提琴显示了问题:http://jsfiddle.net/kRG95/1/
我的用例不允许这些选择元素上的ID(它们来自多次呈现的模板)。如果我使用classNames,jQuery mobile会错误地呈现选择(双重包装)。
这是否有一个已知的解决方法? Le Google没有给我看任何东西。
为完整起见,以下代码 不起作用:
$(".one, .two").selectmenu();
$(".two").selectmenu("disable");
$(".one").on("change", function(){
$(".two").selectmenu("enable");
});
$("body").trigger("create");
但如果我将这些classNames更改为id,就像这样:
$("#one, #two").selectmenu();
$("#two").selectmenu("disable");
$("#one").on("change", function(){
$("#two").selectmenu("enable");
});
$("body").trigger("create");
一切都按预期工作。
具体错误(自从我被问到):
Uncaught Error: cannot call methods on selectmenu prior to initialization; attempted to call method 'disable'
答案 0 :(得分:2)
由于jQuery Mobile在输入被widgetized时将类传播到另一个元素,你应该将select标记添加到你的选择器
$("select.one, select.two").selectmenu();
$("select.two").first().selectmenu("disable");
$("select.one").on("change", function(){
$("select.two").selectmenu("enable");
});
$("body").trigger("create");
<强> Working fiddle 强>