删除ajax加载的内容和脚本

时间:2012-07-20 09:29:34

标签: javascript ajax jquery

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

我在我的网站上使用ajax,现在响应该调用我发送了一些HTML和脚本。

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

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

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

然后在第二次通话之前删除内容: $('.ma_right_main').html('');

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

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

2 个答案:

答案 0 :(得分:3)

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

有很多方法可以解决这个问题,如果每个动态加载的脚本都是它自己的对象,那么当“卸载”时你可以将对象设置为null。这是我在寻找类似解决方案时遇到的一个解决方案。

找到我所指的引用:https://stackoverflow.com/a/1346903/1475461

答案 1 :(得分:3)

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

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

并且您无法停用脚本,因此您需要考虑到这一点来重构您的网站。如果新代码可能与之前的代码冲突,请不要在代码中包含新代码。使用始终加载的通用代码。