0

そのため、ダストテンプレートを使用していくつかの要素をレンダリングしていますが、テンプレートがレンダリングされた後、要素の1つにバインドしたjqueryイベントが発生しません。ダストテンプレート:

<input type="number" id="numAmounts" value={numAmounts}>

$(document).readyのJqueryイベントバインディング:

$("#numAmounts").on("blur", updateModel);

イベントはまったく発火しません、誰かが理由を知っていますか?

4

1 に答える 1

1

DOMreadyイベントが発生したにDust.jsテンプレートがレンダリングされているように聞こえます。つまり、$(document).ready()関数が実行されると、ofを持つ要素idnumAmounts存在せず、イベントハンドラーはバインドされません。

これを回避するための1つの解決策は、イベント委任を使用することです。

$(document).on('blur', '#numAmounts', updateModel);

基本的な原則は、イベントハンドラーが存在する要素(この場合はそれ自体)にバインドされ、そのイベントdocumentに反応する内部に存在する動的要素のセレクターを指定することです。理想的には、ドキュメント全体よりもHTML構造の動的要素に近いものを選択します。

別の解決策として:Dustのドキュメントを簡単に読んだところrender、テンプレートがレンダリングされた後に実行される関数にコールバック関数を渡すことができるようです。その中に静的イベントハンドラーバインディングを含めることができ、その時点で要素が存在すると想定しても安全です。Dust.jsドキュメントコールバックインターフェイスのセクションをご覧ください。

于 2013-03-22T14:29:21.143 に答える