我正在尝试通过 jQuery 的 .load() 函数在远程加载(注入)的 HTML 文件中引用一些 javascript 文件。我试图在加载的 HTML 文件中使用的 javascript 文件已经包含在加载的 HTML 的父 HTML 页面中。
最初,我认为在加载的 HTML 中引用这些文件会很好,因为它包含在页面中,但它似乎不起作用。
谁能告诉我如何在注入的 HTML 文件中使用 javascript?
我正在尝试通过 jQuery 的 .load() 函数在远程加载(注入)的 HTML 文件中引用一些 javascript 文件。我试图在加载的 HTML 文件中使用的 javascript 文件已经包含在加载的 HTML 的父 HTML 页面中。
最初,我认为在加载的 HTML 中引用这些文件会很好,因为它包含在页面中,但它似乎不起作用。
谁能告诉我如何在注入的 HTML 文件中使用 javascript?
如果我理解正确,听起来您需要使用getScript()
- 这加载并执行使用 HTTP GET 请求的本地 JavaScript 文件。
$.getScript( url, [callback] )
我相信你正在寻找的是 .live()
.live() 允许您“将处理程序附加到与当前选择器匹配的所有元素的事件,现在或将来。”
例如:
$(".clickme").click(function(){
$(this).fadeOut();
}
此代码不适用于已使用 .load() 或 .get() 注入页面的任何元素
但如果你这样做:
$(".clickme").live('click', function(){
$(this).fadeOut();
}
...它甚至可以在通过 javascript 注入页面布局的元素上工作。
更多信息在jQuery AP
如果脚本元素是您加载的 html 的一部分,那么您只需将其附加到正文即可。
例子:
$.ajax({
//...
//...
success: function(response) {
// assuming response is a full HTML page
var r = $(response);
// append your content
$("#someContainer").append($("#someContent", r));
// append the scripts
$("body").append($("script", r));
}
//...
//...
});
当然你可以使用你自己的选择器,这只是一个例子。让我知道这对你有什么影响。
如果 test1.htm 包含:
$(document).ready(function() { $('.main').load('test2.htm', function() { $('.result').text('页面已检索'); } ); });
而test2.html包含:<script type="text/javascript" src="exscript.js"></script>
在文档的头部。
exscript.js 包含:
警报(“嗨”);
如果您加载 test1.htm,您会收到通知。再见!:)