2011-08-10 12 views
1

私は$ .tmpl準備機能をどうすればいいのですか?jQuery .tmpl()でイベント処理が完了しましたか?

私のコードでは、ajax jsonをcreateForm関数に渡します。

var doFunction = { 
new: function() { 
    $.ajax({ 
     url: 'index.php?...', 
     success: function(data) { 
     createForm(data).appendTo($("#whitespace")); 
     $("#whitespace").click(function(){ 
      $(this).empty().hide(); 
     }); 
     $("#popup").click(function(e){ 
      e.stopPropagation(); 
     }); 
     $("#whitespace").show(); 
     } 
    }); 
}, 

CreateFormの機能

function createForm(data) { 
var $container = $('<div id="popup"></div>'); 
var $content = $('<article></article>'); 
$.get('mydomain.com/formcreator.htm', function(template) { 
    $.tmpl(template, data).appendTo($content); 
}); 
$content.appendTo($container); 
return $container; 
} 

しかし、私は$container$container.find(".tabs").tabs();に言うならば - それは<div class="tabs>...etc...</div>が含まれています。

私は問題が$ .tmplの終了イベントをキャッチしなかったと思います。
$ .tmplの成功イベントはありますか?

私を助けてください。

+0

何もありません。 Awww :( –

+1

私は関数が同期関数だと思うので、 'tmpl'は実際の問題ではないと思うのですが、テンプレートの後に' $ .get'のコールバック関数で '$ container.find'を使ってみてくださいところで、失敗したときに '$ container.find'が呼び出されたときに私たちに見せてもらうと助けになります –

+0

$ .getは非同期です。私は' success:function (データ){...}は 'complete:function ... 'であるが、同じ問題が発生する:( –

答えて

0

これは@Aleksi Yrttiahoさんのおかげで解決策は、非同期ajax要求をオフにして、同期の代わりに同期を使用しています。

$.ajax({ url: 'domain.com/formcreator.htm', 
success: function(template) { 
    $.tmpl(template, data).appendTo($content); 
}, 
async: false 
}); 
0

あなたはこれを試してみてください:

success: function(data) { 
     createForm(data).appendTo($("#whitespace")); 
     $.fn.ready(function(){ 
      //your append callback function 
     }); 
} 

それは私のためにうまく動作します。

関連する問題