2

jquery mobile と html5 を使用してモバイル アプリケーションを開発しています。アプリケーションの 1 つの部分はイベント カレンダーであり、次のボタンと前のボタンをクリックして月を繰り返すことができます。

反復機能は問題なく動作しますが、月が変更された場合、ボタンの内容と機能を更新して、新しい月の前のボタンと次のボタンを表示する必要があります。

if (month == 11) {
  var next_month = '<input id="next" onclick = "callMonth(' + 0 + ',' + (year + 1) 
    + ');" type="button" data-icon="arrow-r" data-inline="true" value="' 
    + monthNames[0] + ' ' + (year + 1) + '" />';
} else {
  var next_month = '<input id="next" onclick="callMonth(' + (month + 1) + ',' 
    +  year + ');" type="button" data-icon="arrow-r" data-inline="true" value="' 
    + monthNames[month + 1] + ' ' + (year) + '" />';    
}

// previous month
if (month == 0) {
  var prev_month = '<input id="next" onclick = "callMonth(' + 11 + ',' 
    + (year - 1) + ');" type="button" data-icon="arrow-l" data-inline="true" value="'
    + monthNames[11] + ' ' + (year - 1) + '" />';
} else {
  var prev_month = '<input id="next" onclick="callMonth(' + (month - 1) + ',' 
    + year + ');" type="button" data-icon="arrow-l" data-inline="true" value="' 
    + monthNames[month - 1] + ' ' + (year) + '" />';
}

onclickjQuery モバイル関数$("#next").click()が if-else-block 内で動作しないため、入力ボタンのパラメーターを使用しています。callMonth(y,m)関数自体がこのコードを呼び出すことも重要です。上記のコードは、関数calendarWidget()によって呼び出される関数の一部ですcallMonth()。したがって、onclickパラメーター関数は、ボタンを再度作成する関数をトリガーします。

今私の問題に:ボタンが初めて生成されたとき、それは正しいスタイル(jQueryモバイル、次/前のアイコン)を持っています。ボタンをクリックすると、前の月か次の月かに関係なく、次の月または前の月がすべての内容とともに正しく表示されます。問題は、ボタンのスタイルがブラウザーのデフォルトにリセットされることです。つまり、jQuery モバイル UI もアイコンもありません。前に示したように、機能の更新は問題なく機能します。つまり、月単位で反復を続けることが可能です。

ボタンのスタイルが変更されないようにするにはどうすればよいですか? ボタンの機能をどのように実装すればよいですか (ページをリロードせずに?)

jQuery モバイルと英語の経験不足で申し訳ありません。このエラーを文書化するソースが見つかりませんでした。おそらく問題はの使用ですがonclick、if-else-statement 内でクリック イベント トリガーを定義することはできません。この問題を解決するためのヒント、ヘルプ、または手がかりをいただければ幸いです。

よろしくお願いします!

4

1 に答える 1

0

私の問題について十分な詳細がなかったため、またはおそらく具体的すぎたため、簡単な解決策を見つけることができませんでした。この問題を解決するための簡単な回避策を書きました。変更が行われた後、すでに2つのボタンで呼び出しを試みました.trigger("create")が、機能しませんでした。したがって、すべての変更が完了したら、ページのリロードを追加するだけです。

var callMonth = function(m, y) {
    $("#calendar").calendarWidget({month: m, year:y});
     eventData = eventFeedReader.read(function(eventData) {
                evalCalendar(m, y, eventData);
            });
    $('#events').page('destroy').page();
    }

callMonth-Function は、ボタンの onclick-parameter によって引き続き呼び出されます。

<input id="next" onclick="callMonth(' + (month + 1) + ',' 
    +  year + ');" type="button" data-icon="arrow-r" data-inline="true" value="' 
    + monthNames[month + 1] + ' ' + (year) + '" />';    

したがって、ここでは変更しません。

このコマンド.page("destroy").page()は、カレンダー ウィジェットに加えられたすべての変更も元に戻すと思っていましたが、そうではありませんでした。ページが破棄されて再構築された後、コンテンツと機能は正常に機能しています。ボタンの再作成をトリガーすることができなかった理由はわかりませんが、とにかく-今ではすべて正常に機能しています.
とにかく、解決策を推測しようとしたすべての人に感謝し、同様の問題を抱えているときにこれに出くわした人に幸運を祈ります!

于 2012-10-09T16:25:37.160 に答える