gpt4 book ai didi

php - 脚本被 jQuery .load 剥离

转载 作者:太空狗 更新时间:2023-10-29 13:50:41 25 4
gpt4 key购买 nike

我认为以前没有人提出过这个问题,至少没有以我需要的方式回答。我正在使用 jQuery 的 .load 函数。仅加载页面片段时出现问题。

当使用类似的东西时:

$('#content').load('loadTest.html');

loadTest.html 上的所有脚本都可以正常加载。但是,当加载这样的页面片段时:

$('#content').load('loadTest.html #content');

在更新 DOM 之前删除脚本

这在 http://api.jquery.com/load/ 中有明确记录其中说:

注意: 使用不带后缀选择器表达式的 URL 调用 .load() 时,内容会在脚本被删除之前传递给 .html()。这会在脚本 block 被丢弃之前执行它们。但是,如果调用 .load() 时将选择器表达式附加到 URL,则脚本会在更新 DOM 之前被删除,这就是它们永远不会被执行的原因。下面是这两种情况的示例:

我知道我可以只在外部加载可以在任何地方使用的脚本,但问题是,我使用的是页面范围的 ajax 系统,其中所有内容都是动态加载的。所以我真的不想在外部文件中拥有我将要编写的每一个 javascript 函数(此时有 100 个)。特别是因为其中一些 javascript 函数是由从数据库加载的值构成的,我无法在 .js 文件中考虑这些值。

对于在更新 DOM 之前删除脚本是否有任何解决方法?我可以通过某种方式手动加载它们吗?任何微小的例子都会对我有所帮助。

最佳答案

就像你说的。 jQuery 在仅执行该 block 之前提取该元素。

您可以修改输出以使服务器以您需要的格式返回数据,或者编写您自己的格式。它会提取您需要的元素并将它们输出到 DOM。

未经测试,但应该是这样的......

$('#content').load('loadTest.html #content,script');

从内存中这个更有效..

$.get('loadTest.html',function(r){
var els = $(r).find('#content,script');
$('#content').html(els);
});

关于php - 脚本被 jQuery .load 剥离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8550048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com