【发布时间】:2012-01-22 22:00:53
【问题描述】:
我认为以前没有提出过这个问题,至少没有以我需要它回答的方式提出。我正在使用 jQuery 的 .load 函数。仅加载页面片段时出现问题。
当使用类似的东西时:
$('#content').load('loadTest.html');
loadTest.html 上的所有脚本都可以正常加载。但是,当加载这样的页面片段时:
$('#content').load('loadTest.html #content');
在更新 DOM 之前删除脚本
http://api.jquery.com/load/ 中明确记录了这一点:
注意: 当使用没有后缀选择器表达式的 URL 调用 .load() 时,内容会在脚本被删除之前传递给 .html()。这会在脚本块被丢弃之前执行它们。但是,如果调用 .load() 时将选择器表达式附加到 URL,则脚本会在 DOM 更新之前被剥离,这就是它们永远不会执行的原因。两种情况的示例如下所示:
我知道我可以从外部加载可以在任何地方使用的脚本,但问题是,我使用的是页面范围的 ajax 系统,其中所有内容都是动态加载的。所以我真的不想在外部文件中拥有我将编写的每一个javascript函数(此时为100个)。特别是因为其中一些 javascript 函数是由从数据库加载的值组成的,我无法在 .js 文件中说明。
在更新 DOM 之前删除脚本是否有任何解决方法?我可以以某种方式手动加载它们吗?任何小例子都会对我有所帮助。
【问题讨论】:
-
有什么好处?或者反过来:为什么不编写自己的加载函数来完全满足您的需求?
-
@hakre 由于整个站点都是 ajax 驱动的,所以我并不总是知道单击链接时需要加载哪些 javascript 函数。我只是不知道如何手动将脚本放回已剥离的 .load 中。
标签: php javascript jquery html load