2

jquery-tmpl テンプレート ライブラリを使用して動的<select>リストを作成しています。<option>私のテンプレートには、ページ上の既存の要素からすべての要素を返す関数呼び出しが<select>あります。

私のテンプレートでは、関数呼び出しは正常に実行さ.html()れ、既存の<select>リストから返されますが、リストに HTML を追加するのではなく、DOM 内のテキストとしてレンダリングされます<select>

<select>関数が文字列を返すだけで、そのように扱われているように見えることは理解していますが、テンプレート内の要素への参照を実際に取得して jQuery 機能を実行する方法がわかりません。

リストをテンプレート HTML 要素に追加する方法<option>、またはテンプレート要素への参照を取得する方法は?

ここに私のテンプレートがあります:

<script id="searchTemplate" type="text/x-jquery-tmpl">
    <select id="destinations" class="destinations">
        ${getDestinationList()}
    </select>
</script>

そして、<option>コレクションを文字列として返す私の関数:

function getDestinationList(){
    return $("#tabs-0 select[id$='destinations']").html(); //returns HTML list as string successfully
}

前もって感謝します!!

4

1 に答える 1

2

わかりました、申し訳ありません。これを理解するために数時間を費やし、投稿してから数分後に解決策を見つけました(顔を平手打ち)。

私が見つけた解決策は、プラグインのコンパイル済みテンプレート機能を使用することでした。以前にこれを試してみたところ$.template( "#destinationList", getDestinationList() );、ブラウザでスクリプト エラーが発生していました。プラグインの古いバージョンを使用していたことが判明し、関数には実際に署名がありました$.templates(name, tmpl)。次に、最新バージョンを持っているかどうかを確認したところ、署名が$.template(name, tmpl)現在のドキュメントに沿ったものに変更されていることがわかりました。それがいつ変わったのかは定かではありませんが...

それを理解した後、コンパイルされたテンプレート機能を適切に使用することができました。

<script id="searchTemplate" type="text/x-jquery-tmpl">
   <select id="destinations" class="destinations">
      {{tmpl "#destinationList"}}
   </select>
</script>

そして、コンパイルされたテンプレートを定義するページの読み込みでは、次のようになります。

$(function(){
    $.template( "#destinationList", getDestinationList() );
});

私の変更されていない機能で:

function getDestinationList(){
    return $("#tabs-0 select[id$='destinations']").html();
}

これを調べた人には申し訳ありませんが、うまくいけば、これが他の誰かの助けになることを願っています.

于 2010-09-21T21:26:27.237 に答える