16

iOS デバイスを対象とした、Web データベース駆動のオフライン Web アプリを作成しています。jQuery Mobile を使用しようとしていますが、さまざまなフォームの作成に問題があります。

フォーム オプションはデータベース クエリから取得されるため、ページが読み込まれた後にページに挿入されるため、「jQuery-Mobilification」は発生しません。ソースをざっと見てみると、この段階でこれを呼び出す明白な方法はないようです (もちろん、これはアルファ リリースであり、これはかなり一般的な要求になると思います。来る)。これを行うために私が入れることができる何らかの回避策はありますか? 特にラジオ ボタン、チェック ボックス、選択リストに興味があります。

4

8 に答える 8

12

アップデート

Beta2 にはcreateイベントがあります。beta2 がリリースされたら、FAQ を更新します。http://jquerymobile.com/blog/2011/07/22/jquery-mobile-team-update-week-of-july-18th/を参照してください。

よくある質問の更新: http://jquerymobiledictionary.pl/faq.html


CaffeineFueled が提案し.page()たように、JQM を HTML の任意の部分で動作させる方法です。

.page()要素に対して 1 回だけ呼び出すことができます。ページに追加するラッピング要素で呼び出します。すべてを処理する必要があります。

于 2010-12-13T12:08:11.713 に答える
3

現在選択されている回答は少し古くなっています。動的に追加されたコンテンツ (リストまたはフォーム) のスタイル設定には、「ページ」ではなく「更新」を使用します。

リストビューにアイテムを追加する場合は、refresh() メソッドを呼び出してスタイルを更新し、追加されたネストされたリストを作成する必要があります。例えば、$('ul').listview('refresh');

jQuery Mobile ドキュメント経由、1.0.4a

于 2011-06-16T01:20:33.393 に答える
2

これは文書化されていない内部で混乱していますが、次のことが私のために働いています:

$("#some-div").load("/html/fragment/", 
                    function() { 
                      $(this).find("input").customTextInput();  
                    });

ボタン、チェックボックスなどには同等の方法があります。

http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.js_enchanceControls[sic]メソッドをご覧ください。

1.0Alpha2のアップデート:ライブラリの内部で遊んでいるときに予想されるように、これは最新バージョンでは機能しなくなりました。少し修正するように変更customTextInput()しましtextinput()たが、何らかの理由でテーマが完全に適用されていません。警告されました...

于 2010-10-29T05:32:34.143 に答える
2

AJAX 呼び出しが終了し、フォーム要素を挿入したら、次の呼び出しを試してください。

$("#the-page-id").page();

jquery-mobile チームは、将来的にこの問題を解決するために、さまざまな UI 要素に .refresh() メソッドを追加すると思います。

于 2010-10-28T10:58:10.630 に答える
1

ええ、問題はあなたが説明したとおりです。ドキュメントの準備が整うと、「動員」が開始されます。ただし、オフライン DB クエリは非同期であるため、document.ready が起動された後に終了します。したがって、DOM はプロセスの後半で更新され、余分な CSS がすべての div とリスト項目に追加されることはありません。

モバイル js のソースを変更して、ドキュメントの準備ができたときに実行するのではなく、実行するように指示したときに実行する必要があると思います。次に、データベース コールバックでその関数を呼び出す必要があります。

現時点ではそれしか選択肢がないようです。

伝統的に私は jqtouch を使用し、現在は sencha を使用しています。私は jQuery モバイルであまり遊んだことがありません。

別の方法 - 必要な CSS スタイルを使用してデータベースからクエリを実行した後、HTML を書き出すこともできます。Firefox 用の Firebug プラグインを使用すると、モビライゼーションの実行時に適用されるスタイル/クラスを確認できます。これらの規則を使用して HTML を書き出すことができます。理想的ではありませんが、うまくいきます。

于 2010-10-28T04:01:36.983 に答える
1

これは私にとってはうまくいきました(jquerymobile1.7.0):

$('#formular').append('<div data-role="fieldcontain" class="ui-hide-label">' +
'<label for="name" class="ui-hidden-accessible">Name:</label>' +
'<input type="text" name="name" size="25" id="name" placeholder="Name"/>' +
'</div>');  
$('#name').textinput();

現在、すべての種類のフォーム要素 (スライダー、テキスト入力など) を作成するための、いわゆるプラグイン関数があります。

于 2012-01-05T09:05:20.293 に答える
1

naugtur の言うとおりです。dom に追加する任意の要素で .page() を呼び出す必要があります。その後、うまく機能します。

var el = $('<input type="text"/>')
el.page();
$('#something').append(el);
于 2011-01-11T22:42:08.300 に答える
0

トムが話したこの機能のドキュメントへのリンクは次のとおりです。それらがいつ追加されたかは正確にはわかりませんが、私はそれを使用していて、それは私のために機能します!

http://jquerymobile.com/test/docs/forms/plugin-eventsmethods.html

于 2011-02-06T21:03:24.553 に答える