删除/替换AJAX请求上的所有脚本

时间:2018-09-06 16:05:17

标签: javascript jquery

当我发送一个AJAX请求时,我想替换/重新加载每个脚本,每次单击链接(加载页面)都会调用该请求。

var containerClass = ".container",
    container = $(containerClass),
    scripts;     

$.ajax({                                                             
    url: href,
    cache: false,
    success: function (result) {
        scripts = $("body").find("script[src]");

        if(scripts.length) {
            scripts.detach();
            scripts.remove();
        }

        scripts.each(function() {
            var text = $("body").text(),
                node = document.createElement("script");

                 if(!$(this)[0].async) node.async = false;

                node.src = $(this).attr("src");

                node.appendChild(document.createTextNode(text));
                document.body.appendChild(node);
                console.log("Added");
        });

        container.html($(result).filter(containerClass).html());
    }
});

这里的问题是.detach().remove()的行为不符合我的预期-每次发送请求时,脚本的数量似乎都翻了一番:第一个请求将在控制台中打印12条“已添加”消息,但下一个请求将显示24条消息,接下来的48条消息,依此类推。

如何以最好/最有效的方式实现这一目标?

0 个答案:

没有答案