Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用jQuery.load剥离脚本_Php_Javascript_Jquery_Html_Load - Fatal编程技术网

Php 使用jQuery.load剥离脚本

Php 使用jQuery.load剥离脚本,php,javascript,jquery,html,load,Php,Javascript,Jquery,Html,Load,我认为这个问题以前没有被提出过,至少没有以我需要的方式得到回答。我正在使用jQuery的.load函数。我在加载页面片段时遇到问题 当使用以下内容时: $('#content').load('loadTest.html'); loadTest.html上的所有脚本都可以正常加载。但是,在像这样加载页面片段时: $('#content').load('loadTest.html #content'); 在更新DOM之前,将剥离脚本 该文件清楚地记录了以下内容: 注意:当使用不带后缀选择器表达式

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

当使用以下内容时:

$('#content').load('loadTest.html');
loadTest.html上的所有脚本都可以正常加载。但是,在像这样加载页面片段时:

$('#content').load('loadTest.html #content');
在更新DOM之前,将剥离脚本

该文件清楚地记录了以下内容:

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

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


在更新DOM之前,是否有任何解决方案用于剥离脚本?我可以用某种方式手动加载它们吗?任何小小的例子都会对我有帮助。

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

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

未经测试,但它将沿着这条路线

$('#content').load('loadTest.html #content,script');
从内存来看,这更有效

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

在你的评论之后,我想你可能会对类似的东西感兴趣。它有条件地加载脚本,我在一些较小的网站上使用它,当我需要在不同的子页面或用户交互上加载脚本和CSS时,只加载它们

在头部加载一次:

  <script src="js/lazyload-min.js" type="text/javascript"></script>
也适用于CSS文件

这在您的情况下可能会有所帮助,但也可能会改变您的加载逻辑。在任何情况下,我认为通常情况下,您的服务器上应该有多个AJAX端点,它们只返回您请求的数据。否则事情会变得具体甚至棘手


与其说是一个真正的答案,不如说是一个评论。

有什么好处?或者反过来说:你为什么不编写自己的加载函数来实现你想要的呢?@hakre因为整个网站都是ajax驱动的,我并不总是知道当点击链接时需要加载哪些javascript函数。我只是不知道如何手动将脚本放回去。加载已被剥离。
// Load a single JavaScript file and execute a callback when it finishes.
LazyLoad.js('http://example.com/foo.js', function () {
  alert('foo.js has been loaded');
});