問題タブ [jquery-3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
249 参照

jquery - jquery 1 および 2 とは異なり、jquery 3 の ajax ハンドラーは、ハンドラー コードの完了後にのみ、新しく追加された html+js を実行します。

問題を示すために jsbin を作成しました: http://jsbin.com/dexeqiz/edit?html,js,output

このhtmlを持っている:

そしてjs:

jquery 1および2で

#log に表示されます:
3
1
2

しかし、jquery 3 では
1
2
3をレンダリングします

(したがって、ajax ハンドラー全体が完了した後にのみ 3 が追加されます)

これは問題です。私のコードでは、前の行に追加されたコードが次の行を呼び出す前に実行されることを予期している場合があるためです。


今のところ私の唯一の回避策は、コードを の後に置くことです.append(newhtml)setTimeout、ユーザーにとっては少し遅く見えるので、そうしないことをお勧めします。私はむしろ次のようなものが欲しい$.when(append).done(function(){code})

更新:$(function(){});これは、ドキュメントの準備が整った非同期ロード 用のjQuery 3スクリプト( https://github.com/jquery/jquery/issues/1895 )から開始し、これが私の現在のソリューションであるために発生しているようです: http://jsbin.com/ xayitec/edit?html,js,出力