0

AJAXを使用してデータを取得し、要素を前に追加してbody表示します。表示されたら、新しい要素に対してクライアント側の操作を実行する必要があります (たとえば、codecogs の scriptを使用して Latex をレンダリングする必要があります)。私のコードは次のようになります。

$.ajax({
/* ... */
success: function(data){
    /* new element generation... */
    $(newelement).fadeIn(100, LatexIT.render('*'));
},
/* ... */ });

ご覧のとおりLatexIT.render('*')、fadeIn からのコールバックとして呼び出します。LatexIT.render('*')アニメーションが終わった直後に何をするべきかを実行する必要があります。$.ajax successただし、フェード自体は正常に発生しますが、コールバックから呼び出された場合は機能しません。

更新:単純な関数に置き換えようとしましたLatexIT.render('*')が、機能しません。そして、ajax の成功の外部から呼び出されたときにfadeIn(100, function () { LatexIT.render('*') }); 機能します。

4

2 に答える 2

2

LatexID.render('*')メソッドをバインドするのではなく呼び出す構文です。.renderそれ自体が関数を返さない限り (可能性は低い)、次の構文を使用する必要があります。

.fadeIn(100, function () { LatexIT.render('*') });

次のこともできます。

.fadeIn(100, LatexIT.render.bind(undefined, '*'))

サポートする必要があるブラウザが.bind

于 2013-04-01T20:03:40.997 に答える
1

そこでは、成功のコールバックを与えていません。レンダリングを実行し、レンダリング メソッドがフェード アニメーションの完全な引数に返すものを与えています。これは、実際にはアニメーションが最後に呼び出すことができる関数ではありません。

無名関数にラップするだけです。 $(newElement).fadeIn(100, function() { LatexIT.render("*"); })

于 2013-04-01T20:11:25.933 に答える