2

TL;DR : このフィドルは問題を示しています: http://jsfiddle.net/kRG95/1/

私の使用例では、これらの select 要素に ID を使用できません (複数回レンダリングされるテンプレートから取得されます)。classNames を使用すると、jQuery モバイルは選択を正しくレンダリングしません (二重ラップ)。

これに対する既知の回避策はありますか? 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'

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 に答える