1

jqueryMobileのselectmenuにオプションを追加しようとしています。sqliteデータベースから追​​加したい値を読み取ります。データベースからの読み取りは機能し(コンソールログ出力は16行が見つかったことを示します)、新しいオプションを保持する変数も正しく入力されます。しかし、selectmenuにオプションを追加したい場合、「初期化前にselectmenuのメソッドを呼び出せません:メソッド'refresh'を呼び出そうとしました。更新前にselectmenu()メソッドを実行しようとしましたが、実行しました」というエラーが表示されます。どちらも機能しません。私のコードは次のとおりです。

HTML:

<select name="subject" class="subjectDropdown" data-native-menu="false">
    <option>%tx_subject%</option>
</select>

Javascript:

    //  Read all subjects from the database
    fillSubjectsDropdown: function(){
        sz.db.container.transaction(function(tx){
            tx.executeSql("SELECT * FROM SUBJECTS ORDER BY sj_name", [], sz.db.selectSubjectsSuccess, sz.db.errorCB);
        }, sz.db.errorCB, sz.db.successCB);
    },

//  Read subjects Callback
    selectSubjectsSuccess: function(tx, results){
        var len = results.rows.length;
        console.log('### szlog: Subjects found: ' + len);
        var subjects = '<option value="">' + sz.langdata['subject'] + '</option>';
        for (var i = 0; i < len; i++){
            subjects += '<option value="' + results.rows.item(i).sj_id + '">' + results.rows.item(i).sj_name + '</option>';
        }
        $(".subjectDropdown").html(subjects).selectmenu('refresh', true);
    },

私はいくつかの記事を検索して見つけましたが、どれも本当に私を助けることができませんでした。どんな助けでも大歓迎です。

jqueryMobile 1.2.0、jquery 1.8.3、phonegap2.3.0を使用しています

ありがとう

4

1 に答える 1

1

このエラーの場合:

初期化前に selectmenu のメソッドを呼び出すことはできません: メソッド 'refresh' を呼び出そうとしました。

ボタン、選択ボックス、リストビューのいずれであっても、更新機能によるメルクアップ拡張を開始する前に、その要素を初期化する必要があります。

コードを次のように変更します。

$(".subjectDropdown").html(subjects).selectmenu().selectmenu('refresh', true);

最初の .selectmenu()はそれを初期化し、2番目の .selectmenu('refresh', true); スタイリングします。

于 2013-02-25T10:12:07.473 に答える