当前位置: 首页 > 面试题库 >

追加后,jQuery .load()/ .ajax()在返回的HTML中不执行javascript

孔征
2023-03-14
问题内容

我尝试使用.load()$.ajax获取一些需要附加到容器的HTML,但是当我将其附加到元素时,返回的HTML中的Javascript不会被执行。

使用.load()

$('#new_content').load(url+' #content > *',function() {
    alert('returned');
});

我也尝试过切换到$
.ajax呼叫。然后,我从返回的HTML中提取了脚本,然后将其附加到容器中,但是同样的问题,在这种情况下,JS没有被执行,甚至没有附加,据我所知,试图将a附加<script>到DOM元素像这样皱眉吗?

使用$.ajax

$.ajax({ url: url }).done(function(response) {
    var source  = $("<div>").html(response).find('#overview_script').html();
    var content = $("<div>").html(response).find('#content').html();

    $('#new_content').html(content);
    $('<script>').appendTo('#new_content').text(source).html();

});

理想情况下,在附加HTML之后,我将在回调中运行此javascript,但是将变量设置为从控制器返回的值。

因此,在总结,我想获得一些HTML包含JS说的是HTML已经被附加后运行的需要,但我一直在使用没有运气.load()$.ajax()作为在返回的HTML要么消失剧本追加它,或者它根本不执行。


问题答案:

load()与片段选择器一起使用时,脚本元素将在添加片段之前被剥离,因此脚本将不会执行。

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

所以尝试

$.get('partial.html', function(result){
    $result = $(result);

    $result.find('#content').appendTo('#new_content');
    $result.find('script').appendTo('#new_content');
}, 'html');

演示:小提琴



 类似资料:
  • 问题内容: 用jQuery进行AJAX调用时,何时应使用load(url,data,callback)方法而不是jQuery.get(url,data,callback,type)? 问题答案: 首先,这两个功能是完全不同的。“加载”功能与选择器一起使用,并将AJAX调用的结果加载到所选组中,而回调将处理调用的“未完成”事件;$ .get函数更通用,回调处理AJAX调用的成功响应,您可以在其中自由

  • 问题内容: 我需要在ajax加载后添加一个类。首先,我给一些元素提供一个“就绪”类,该类可以启动CSS过渡。单击链接li#menu- item-318a时,它将删除ready类,该类将反转CSS转换,然后加载新的html文档。在Aja加载中,我再次想将ready类添加到Ajax调用插入的相同元素中。 下面的代码有一个回调,可以添加ready类,它可以工作。但是,当Ajax加载其集合时,Ready类

  • 问题内容: 我有一个javascript函数,我希望在JSF 2中进行每次异步回发后执行。 我已执行以下操作以确保执行此每整页回发: 我需要执行此操作的原因是为了解决第三方JSF组件库中的故障,因此我无法在服务器呈现阶段中进行任何修改来对此组件执行此操作。 我可能找不到有关此问题的信息,可能是因为我使用了不正确的术语。我曾经是ASP.NET开发人员,我将这些术语称为“整页回发”和“部分回发”,而其

  • 问题内容: 一旦Ajax通过PHP返回了HTML代码,我就试图加载一个javascript函数。这需要我在ajax响应中回显javascript。 换句话说,我试图在PHP Ajax响应中添加此代码(放置在脚本标签之间)。.希望它执行 从到目前为止的内容来看,浏览器已经完成了Javascript的读取,因此不会执行。有没有办法做到这一点.... ? 问题答案: 您必须像这样评估该代码 要么 如果您

  • 问题内容: 我正在尝试使用AJAX创建一个页面,但是当我获得该页面并且它包含Javascript代码时,它不会执行。 为什么? 我的ajax页面中的简单代码: …并且它不执行它。我正在尝试使用Google Maps API并通过AJAX添加标记,因此,每添加一个标记,我都会执行一个AJAX页面,该页面将获取新标记,并将其存储在数据库中,并应将标记“动态”添加到地图中。 但是,由于我无法以这种方式执

  • 原文是这样的: 这确实令人惊讶,但最终明白了(嗯,至少我想我明白了)为什么会这样发生。 现在,我将第二个更改为: 如果我遗漏了一些明显的东西,或者我的问题是愚蠢的,让我提前说声对不起。还有谢谢你!