0

jQuery 1.8 から 1.9 へのアップグレードに取り組んでおり、問題が発生しています。特定のページのモーダルにロードできる特定のページがあります。ajax を使用してこれを行いscript、返された html から要素を解析します。次に、html をページに追加し、スクリプトをhead. 次のようになります。

controller_element = $( html )
body_scripts = $( controller_element, "script" ).remove()
$( ".modal-body" ).append controller_element
$("head").append body_scripts

これは 1.8 では機能していましたが、現在 1.9 で問題が発生しています。この問題は、ドキュメントの準備完了イベントを中心に展開しているようです。HTMLには、ドキュメントの準備ができたときに実行する必要があるインラインjavascriptがいくつかあります。これは、ドキュメントによると正しいと思われる追加の直後に実行されます。本当に必要なのは、javascript スクリプトが .xml ファイルに追加された後に実行する必要があることheadです。また、イベントを dom にバインドするには、html がロードされた後に js を実行する必要があるため、これら 2 行の順序を単純に入れ替えることはできません。本当に、1.8 と 1.9 の間に何が起こったのかについてのいくつかの考えは非常に役に立ちます. または、他の誰かが ajax を介して新しいページをモーダルにロードする実装に成功した場合は、実装を聞きたいです。ありがとう。

4

1 に答える 1

1

わかりました、それで私はちょうどそれを理解したと思います。このように本文からスクリプトを解析してきましbody_scripts = $( controller_element, "script" ).remove()controller_element = $( html )。解析をに変更するとbody_scripts = $( "script", controller_element ).remove()、問題が修正されました。1.8の方法でも機能するはずでしたか?

scriptしたがって、基本的に、 HTMLからインラインを含むすべてを削除する必要があります。HTMLを追加してから、スクリプトを追加します。これで、htmlをすべてのイベントにバインドする準備が整い、すべてがロードされた状態でインラインスクリプトを実行できるようになります。

于 2013-02-10T18:01:21.273 に答える