template.htm
ajax で読み込まれたコンテンツのブロックがいくつかあるページを作成しています。synchronously
問題が発生したため、次のようにロードします。
$.ajax({
url: 'module.htm'
})
.done(function(r) {
$('#moduleA').html(r);
});
module.htm
これを数回行い、さまざまな異なるファイルをロードします。それらにはすべて、ヘッダー、本文などを含む標準のhtmlファイルが<!DOCTYPE html>
あります。そこにはjQueryもたくさんあります。
これらのモジュールの一部には動的に追加された要素があり、主に.append()
このように使用されます
$.ajax(......)
.done(function(response) {
var item = $.parseJSON(response);
// iterating voer the JSON and appending elements
$('div').myPluginMethod(); // utilizing the plugin here
});
特定の にプラグインを使用していますが$.fn.myPluginMethod
、問題に気付きました:
問題:<script>
のヘッダーを
使用してプラグインをロードし、module.htm
それを単独で実行すると (外部でtemplate.htm
)、すべて正常に動作します。コンソールで入力$.fn.myPluginMethod
すると、関数が返されます。
しかし、module.htm
ファイルを親template.htm
ページにロードすると、機能しなくなります。コンソールで、次のように入力すると return$.fn.myPluginMethod
が返されますundefined
。
意味がありません。Firebug はプラグイン スクリプトが読み込まれていると表示しますが、なぜ失敗するのでしょうか?
私の理論
どういうわけか、それは私のajax-loadに関係していると思います。この.done()
メソッドは、どういうわけかプラグインのオブジェクトを「見る」ことができないため、unknown method error
. プラグインを手動で貼り付けると、次のように機能します。
$.ajax(......)
.done(function(response) {
var item = $.parseJSON(response);
// iterating voer the JSON and appending elements
// I can paste my raw plugin code here and it will work, but that's silly
});
この ajax ビジネスが問題を引き起こしている理由を理解しようとしています。プラグインが DOM に読み込まれると、すべてのスクリプトが動的であろうとなかろうと、そのメソッドを「見る」ことができるようになると思いました。
ありがとう。