当我发送一个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条消息,依此类推。
如何以最好/最有效的方式实现这一目标?