2011-01-09 11 views
0

ここで問題に直面しています。バグか愚かなのか分かりません。このように、ボタンAとボタンBがclickイベントにバインドされている(widget = $.tmpl(...)で)このテンプレートをレンダリング後ネストされたテンプレート(?)で束縛されたイベントが失われる

<!-- TEMPLATE A --> 
<div class="mplc-widget"> 
<div class="mplc-widget-available"> 
    <div class="mplc-widget-header">Available options</div> 
    <div class="mplc-widget-middle"><input></input></div> 
    <div class="mplc-widget-choices"> 
    <table> 
    {{each(i, choice) choices}} 
    <tr name="${choice[0]}"> 
     <td>${choice[1]}</td> 
    </tr> 
    {{/each}} 
    </table> 
    </div> 
</div> 
<div class="mplc-widget-selector"> 
    <div><button>A</button></div> 
    <div><button>B</button></div> 
</div> 
<div class="mplc-widget-chosen"> 
    <div class="mplc-widget-header">Selected options</div> 
    <div class="mplc-widget-choices"> 
    <table> 
    </table> 
    </div> 
</div> 
</div> 

私は、このテンプレートに基づいてウィジェットを構築しました

$('button', widget).bind('click', function(){alert('Hello world!');}) 

widgetが返されます。以前のテンプレートをレンダリングし、イベントを結合する機能は、他のテンプレートに呼び出されている:このテンプレート{{tmpl field.create()}}

<!-- TEMPLATE B --> 
<div class='form'> 
<table> 
    {{each(i, field) fields}} 
    <tr> 
    {{if field.fieldname}} 
    <p> 
     <td {{if field.required}} class='field-required'{{/if}}> 
     ${field.label}:</td> <td>{{tmpl field.create()}} 
     {{if field.help_text}}<br/><span class='help_text'>${field.help_text}</span>{{/if}} 
     </td> 
    </p> 
    </tr> 
    {{/if}} 
    {{/each}} 
</table> 
</div> 

はレンダリングとtemplate Aを返す関数を表します。 DOMに挿入すると、すべての要素が正常に表示されますが、バインド関数(createに設定されています)が失われます。

これは正しい動作ですか、何か完全に間違っていますか?

答えて

0

まあ、私はまだ上記のロジックを適用することはできません。ただし、livequeryを使用して回避策を適用することができました。理想的ではありませんが、機能します。

関連する問題