jQuery .remove()清除加载JavaScript时用于删除脚本标签?

前端之家收集整理的这篇文章主要介绍了jQuery .remove()清除加载JavaScript时用于删除脚本标签?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
正如标题所示,如果我从DOM中删除一个脚本标记
$('#scriptid').remove();

javascript本身是否在内存中还是被清理?

或者我完全误解浏览器处理javascript的方式?这是很可能的。

对于那些对我有兴趣的问题,请看下面的内容

我将一些常见的JavaScript交互从静态脚本文件移动到PHP中的动态生成的。当用户需要时,它们按需加载。

这样做的原因是为了移动逻辑服务器并运行从服务器客户端返回的小脚本。而不是有一个包含大量逻辑的大脚本,客户端。

这是Facebook的一个类似的方法

Facebook talks frontend javascript

如果我们以一个简单的对话框为例。而不是在javascript中生成html,将其附加到dom,然后使用jqueryUI的对话框小部件加载它,我现在正在执行以下操作。

> Ajax请求是对dialog.PHP
>服务器生成特定于此对话框的html和javascript,然后将其编码为JSON
> JSON返回给客户端。
> HTML附加到< body>那么一旦渲染,JavaScript也被附加到DOM中。

插入后自动执行JavaScript,并打开动态对话框。

这样做大大减少了我的页面上的javasript的数量,但是我担心清理插入的JavaScript。

显然,一旦关闭对话框,就会使用jQuery从DOM中删除

$( ‘#对话’),删除()。

JavaScript附加了一个ID,我也通过相同的方法从DOM中删除

然而,如上所述,使用jQuery的.remove()实际上从内存中清除javascript,或者简单地删除< script>来自DOM的元素?

如果是这样,有没有办法清理这个?

解决方法

否。一旦加载了一个脚本,它定义的对象和函数就被保存在内存中。删除脚本元素不会删除它定义的对象。这与CSS文件相反,删除元素会删除它定义的样式。这是因为新款式很容易被回流。你能想像出一个脚本标签是如何创建的,以及如何去除它?

编辑:但是,如果您有一个定义myFunction的文件,那么您添加另一个脚本,将myFunction重新定义为其他脚本,将保留新值。如果要保持DOM清洁,您可以删除旧的脚本标签,但这是删除它。

EDIT2:我可以想到的唯一真正的“清理”功能的真正方法是拥有一个基本上调用delete window.myFunction的JS文件,用于其他脚本文件可能定义的每个可能的对象和函数。由于显而易见的原因,这是一个非常糟糕的主意。

猜你在找的jQuery相关文章