カスタム テンプレートの入力機能を使用して、ロード時 (最新の jQM バージョン) に選択タグを動的に設定しようとしています。
「pagebeforechange」イベントで fn が呼び出された場合、select タグは適切に初期化されます。このイベントはページ遷移ごとに呼び出されるため、fn を「pageinit」イベントに移動することを考えました。おそらくDOMがまだ完全に利用可能ではないため、これは機能しません。ページにコンテンツを一度だけ挿入するようにjQMを強制するにはどうすればよいですか? 現在、私はクラッジを使用しています。きっともっとスマートな方法があるはずです。提案をありがとう。
$(document).bind('pageinit', function () {
InitSelTagTest("#selActTag", "tplTag"); // Does not work.
});
$(document).bind("pagebeforechange", function (e, data) {
if ($("#selActTag").children().size() === 0) {
InitSelTagTest("#selActTag", "tplTag"); // Kludge, but it works
}
});
function InitSelTagTest(el,tpl) { // Append all tags to element el
var lstAllTags = JSON.parse($("#hidTag").val()); // Create tag array
// Retrieve html content from template.
var cbeg = "//<![" + "CDATA[", cend = "//]" + "]>";
var rslt = tmpl(tpl, { ddd: lstAllTags }).replace(cbeg, ").replace(cend,");
$(el).html(rslt).trigger("create"); // Add to DOM.
}
編集 Shenaniganz のコメントに応えて、「pagebeforecreate」イベントがそのトリックを実行できるようです。
$("#pgAct").live("pagebeforecreate", function () {
// Populate tag select. Works. Traversed only once.
InitSelTag("#selActTag", "tplTag");
});