我正在构建一个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
页面中,它就不再起作用了。在控制台中,键入$.fn.myPluginMethod
返回undefined
。
这没有意义。Firebug 显示插件脚本已加载,为什么会失败?
我的理论
不知何故,我认为这与我的 ajax 负载有关。该.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 中,所有脚本,无论是否动态,都将能够“看到”它的方法。
谢谢。