2

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");

但是,如果我将这些类名更改为 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'

4

1 回答 1

2

由于 jQuery Mobile 在输入小部件时将类传播到另一个元素,因此您应该将 select 标记添加到选择器

$("select.one, select.two").selectmenu();

$("select.two").first().selectmenu("disable");

$("select.one").on("change", function(){
    $("select.two").selectmenu("enable");
});

$("body").trigger("create");

工作小提琴

于 2013-07-22T17:17:24.897 回答