0

PhoneGap と Backbone.js を使用してモバイル アプリを開発しています。Backbone のルーターがハッシュタグの変更を処理できるようにするために、すべてのチュートリアルで次のプロパティを設定するように指示されています。

$.mobile.linkBindingEnabled = false;

これは Backbone を有効にするためにうまく機能しますが、selectmenu でバグを引き起こしています。具体的には、(ネイティブではなく) selectmenu ポップアップのカスタム スタイルを使用したいのですが、そのオプションを false に設定すると機能しません。

カスタムスタイルメニュー

このイベントを手動でインターセプトしてカスタム メニューを表示する方法を探しています。私が最初に考えたのは、クリックを手動でキャプチャし、selectmenu の「open」メソッドを使用することですが、これは機能しません。

問題を示すために、jsFiddle ( http://jsfiddle.net/tonicboy/zPS5j/ ) を作成しました。最初にロードするときに、selectmenu をクリックすると、カスタム スタイルのメニューが開きます。linkBindingEnabled を false に切り替えると、機能しなくなります。

4

3 に答える 3

0

わかりました、回避策が見つかったようです。以前は、selectmenu の open メソッドを次のように使用しようとしていました。

$("#selectId").selectmenu("open");

しかし、おそらくまだ jQM のクリック処理に依存していたため、これは機能しませんでした。ページがレンダリングされると、jQM は各 selectmenu のカスタム メニューを作成し、それらを画面外に非表示にして、#selectId-listboxの形式で ID を与えます。ポップアップ ウィジェットを使用して、このメニューをプログラムで表示できます。

$("#selectId-listbox").popup("open");

残念ながら、すべてのクリック処理業務を処理する必要があるため、手動でユーザーの選択をキャプチャし、基になるフォーム要素を更新して、メニューを閉じる必要があります。

于 2013-04-25T08:00:17.067 に答える
0

gabrielschulhof はここでサンプルを提供しました:

http://jsbin.com/sacota/4/

参照: https://github.com/jquery/jquery-mobile/issues/7961

于 2015-02-13T08:53:22.763 に答える