2

だから私はここで少し混乱しています。jqueryと一緒に配置されたときにスクリプトが実行される理由がわかりません.html()が、 。と一緒に配置された場合はわかりませんinnerHTML。jQueryのソースコードを調べましたが、.htmlまだinnerHTML使用されているようでした。誰かがこの振る舞いを説明できますか?

私はajaxの応答中にこれに遭遇しました。htmlとscriptjavascriptが入ったタグを取り戻していて、普段は使っhtmlていますが、なぜかinnerHTML今回は違いがないと思って使っていました。

これはローカライズされているように見えるかもしれないことを理解しているので、問題を強調するために、ajax応答と同様に動作するタイムアウトを使用してjsFiddleを作成しました。

動作を示すjsFiddle

4

1 に答える 1

3

ちょっとしたブレークポイントからわかる限り、jQueryはを使用しようとinnerHTMLしますが、それができない場合は、ターゲット要素を空にして、DOMを介して新しいコンテンツを追加することにフォールバックします。

更新:以下のFelixKlingのコメントを参照してください。基本的に、挿入される文字列コンテンツにスクリプトまたはスタイル/リンクタグが含まれている場合、jQueryはストレートを使用しませんinnerHTML

それが起こったとき-そしてあなたの場合はそうです-コンテンツはdomManip私が完全に理解しているとは言えないという関数を通過しますが、それは特にスクリプトを探して評価します。

つまり、簡単な答えは次のとおりです。jQueryはinnerHTML結局使用していません。正確に何が起こるかについて、より良いステップバイステップを提供できればいいのですが、jQueryのソースを回避する方法が十分にわかりません。ブレークポイントを設定し(jQuery-1.9.1.jsの6074行目、jQueryが結局使用しないinnerHTMLことを決定したポイント)、ソースを少し歩き回りました。

于 2013-03-24T23:58:41.827 に答える