引用
JQuery关于DOM的释放
JQuery的empty()和 remove()
empty()是调用remove()来进行清空的,
而remove()则是先清理所有选中的对象及其子对象的所有事件和属性,再使用removeChild()删除自己.
经在IE6下测试,removeChild()有两个很重要特性:
第一,他不会删除DOM中的事件
第二,他不会真正删除(释放)指定对象中的子对象
而JQuery就是犯了第二条, 结果所有子对象都成为了不在DOM树中的“游离子DOM树”,这时JS是无能为力了(因为已经没有引用地址,例如变量名),即使使用CollectGarbage();都不能释放内存
解决方案(伪代码):
jQuery( “*”, obj).add([obj]).each(function(){
jQuery.event.remove(this);
jQuery.removeData(this);
});
obj.innerHTML = “”;
PS.:
上面代码意思是:使用JQuery把指定对象及所有子对象的事件和属性去除,这是由于使用innerHTML和removeChild()一样也不能清除对象的事件,然后使用innerHTML=”” 来清空内容,使用innerHTML=”能把所有子对象都完全清空.
分享到:
相关推荐
当与其他JavaScript库发生冲突时,我们可以使用`jQuery.noConflict()`方法来释放"$"符号,避免命名空间冲突。 使用jQuery有诸多优点: - **简洁的写法**:jQuery提供了一套简化的语法,如`$("#tt").css("color", ...
jQuery作为前端开发中常用的JavaScript库,提供了丰富的API来操作DOM(文档对象模型),其中移动和复制DOM节点是常见的需求。本文将详细介绍jQuery中移动和复制DOM节点的实用案例。 首先,我们需要了解在jQuery中...
为解决这个问题,jQuery提供了一个`noConflict()`方法,可以释放`$`符号,恢复到其原有的状态。 **四、深入理解jQuery源码** jQuery的源码结构清晰,通过模块化设计,便于理解和扩展。主要包含选择器引擎、DOM操作...
2. **命名冲突**:为了避免与现有JavaScript代码产生命名冲突,jQuery提供了`$`和`jQuery`两个别名,可以使用`jQuery.noConflict()`方法释放`$`符号。 总结,jQuery 1.10.2.min.js是前端开发中的重要工具,它极大地...
jQuery设计时考虑到了与其他库的共存,通过`noConflict()`方法,可以释放 `$` 符号,避免与其他库冲突。 **总结** jQuery 1.4.2和1.6版本都是jQuery历史上的重要里程碑,它们提供的功能和服务对于前端开发者来说是...
在同一个项目中同时使用这两个库时,可能需要采取一些策略来避免冲突,例如使用`jQuery.noConflict()`来释放`$`符号,或者在特定范围内使用`jQuery(function($) { ... })`。 总的来说,这两个框架都有其独特的优势...
- 选择器:jQuery的核心功能之一是通过CSS选择器来选取DOM元素,如`$("#id")`、`$(".class")`和`$("tag")`。 - DOM操作:jQuery提供了一套简便的方法来操作DOM,包括添加、删除和修改元素,如`append()`、`remove...
jQuery设计时考虑到了与其他JavaScript库的共存,通过$.noConflict()方法可以释放$符号,防止与其他库冲突。 **性能优化** - **延迟加载(Lazy Loading)**: 只在需要时加载jQuery和其他相关资源,提高页面加载...
1. **DOM操作**:jQuery提供了方便的API来选择、遍历和操作DOM元素。在翻书特效中,我们需要对每一页进行选中、添加样式和动态修改其位置,这都离不开jQuery的DOM操作方法,如`$(selector).addClass()`, `$(selector...
1. **使用`jQuery.noConflict()`**:这是jQuery提供的一种机制,用于释放`$`变量的控制权,从而避免与其它库(如DWR)的冲突。通过调用`jQuery.noConflict()`,我们可以将`$`的使用权交还给DWR,同时为jQuery分配一...
PHP Simple HTML DOM Parser是一个轻量级且易于使用的库,它允许开发者像操作DOM对象一样方便地处理HTML文档,同时也支持jQuery风格的选择器,使得对HTML元素的操作更加直观。本文将详细讲解这个库的核心概念、功能...
虽然Angular不推荐使用jQuery,但如果你的项目中已经引入了jQuery,可以使用`$(document).ready()`来监听DOM加载完成: ```typescript import * as $ from 'jquery'; @Component({...}) export class ...
描述中提到的链接指向了一篇博客文章,虽然内容未给出,但可以推测作者可能分享了关于如何识别和解决jQuery内存泄漏的技巧。通常,内存泄露在JavaScript中发生是因为动态创建的元素、事件处理函数或其他资源没有被...
jQuery设计时考虑到了与其他JavaScript库共存的问题,通过`$.noConflict()`方法可以释放 `$` 符号,防止与其他库发生冲突。 **7. jQuery 插件生态** jQuery拥有丰富的插件生态系统,如jQuery UI提供更多的UI组件,...
2. **事件监听**:jQuery的`on()`函数可以用来监听用户交互,如鼠标按下(`mousedown`)、移动(`mousemove`)和释放(`mouseup`)等事件,这些是实现拖动操作的关键。 3. **样式操作**:在拖动过程中,我们需要改变元素...
7. **事件处理**:jQuery提供了一种简洁的方式来绑定和触发事件,例如在这里可能是`keyup`事件,当用户在搜索框中释放一个键时,会触发相应的处理函数。 8. **动画效果**:jQuery库也以其丰富的动画功能而闻名,...
- `jQuery.noConflict()` 方法可以释放 `$` 符号,避免与其他库冲突。`jQuery.each()` 用于迭代对象或数组,而 `$(document).ready()` 用于确保页面加载完成后再执行代码。 10. **版本差异** - jQuery 1.4.1 相比...
jQuery设计时考虑了与其他JavaScript库的共存,通过`$.noConflict()`方法,可以释放`$`符号,避免与其它库冲突。 **8. jQuery的版本迭代** 随着Web技术的发展,jQuery经历了多个版本的更新。jQuery 3.x移除了对旧版...
- `jQuery(elements)`:允许通过DOM元素数组或集合创建jQuery对象。 - `jQuery()`:如果没有参数,返回空的jQuery对象,可以用于文档准备就绪的事件绑定。 - `jQuery(callback)`:在文档加载完成后执行指定的回调...