删除ajax加载的内容和脚本

Remove ajax loaded content and script

本文关键字:脚本 ajax 加载 删除      更新时间:2023-11-30

我不知道这可能是重复的,但是,

我在我的网站上使用ajax,现在为了响应这个调用,我发送了一些html和脚本。

然后我用页面中存在的一些元素替换那个些数据。

现在,我想进行第二次ajax调用,所以我已经从加载的div中删除了html内容。然后再次进行ajax调用,返回一些其他html代码和脚本。但有时,这是以前的脚本和新到的脚本之间的冲突。

前任。第一个响应我用一些元素替换html和脚本:$('.ma_right_main').html(response.data);

那么在第二次呼叫之前,我删除内容:$('.ma_right_main').html('');

第二个响应我用一些元素替换html和脚本:$('.ma_right_main').html(response.data);

但在替换它之后,从第一次返回的第二次脚本仍在执行中。我想删除它,就像删除html内容一样。

我不认为浏览器加载脚本后就可以将其删除(这并不意味着你不能将其从dom中删除,但它仍然存在。)例如,如果你有一个变量为x的脚本,加载页面以加载脚本,从dom中移除脚本,我认为x仍然会被定义。

不过,如果每个动态加载的脚本都是自己的对象,那么在"卸载"时,可以将对象设置为null。这是我不久前在寻找类似解决方案时遇到的一个解决方案。

找到了我所指的参考资料:https://stackoverflow.com/a/1346903/1475461

脚本根本不是自然执行的。(设置.innerHTML将不会在HTML中执行脚本)。

jQuery手动查找html中的所有脚本元素,删除它们并计算它们。因此,如果您正在使用.html,并且不希望执行脚本,请不要在html中包含脚本。

而且你不能停用脚本,所以你需要考虑到这一点来重构你的网站。如果新代码可能与以前的代码冲突,请不要在响应中包含这些代码。使用始终加载的泛型代码。