jQuery的分离()V / S删除()V / S隐藏()[闭](jQuery detach() v

2019-06-27 15:05发布

我用我的网页highcharts。 这有点沉重。

当用户点击一个按钮,它动态加载highcharts并且当用户点击close按钮,它删除/隐藏图表。

我想知道哪一个会是更好的选择。

  1. 隐藏图表时用户点击? 它会减慢页面的其余部分(如处理器一起重的JavaScript存在?),或者,

  2. remove()所以它使页面更轻(但在这里,当用户点击按钮再次,我需要重新加载图表),或者,

  3. 使用detach()所以比上重装highcharts,它的工作速度更快remove()但它不会使页面更重jQuery的处理程序是目前所有的时间?)

我从jQuery文档知道,

。去掉()

在卸下摆臂()方法取出DOM的元素。 当你想删除它里面的元素本身,以及一切用一个.remove()。 除了元素本身,与所述元素相关联的所有绑定事件和jQuery数据被除去。

。分离()

所述.detach()方法是一样的一个.remove(),不同之处在于.detach()保持与移除的元件相关联的所有的jQuery的数据。 当移除的元件是在稍后的时间被重新插入到DOM此方法非常有用。

。隐藏()

匹配的元素将被立即隐藏,没有动画。 这大致相当于调用的CSS(“显示”,“无”)

Answer 1:

如果你只是想隐藏/显示的对象,不时,然后使用jQuery .hide().show() 这是最简单,只要你要保持对象周围反正,你可能也只是使用.hide().show() 除非对象消耗大量内存,它不应该是一个问题。

.remove()当保存并重新插入同一对象早在DOM更高版本)将没有多大用处给你,因为它破坏了一些与对象相关的数据的,所以你可能不能够很容易地重新插入它在页。

.remove()你居然让以前的对象得到由垃圾回收销毁,那么你从头需要的时候又是最内存高效运行重建它,但除非它需要消耗大量的内存,或者你有很多他们(如千),它可能只是更多的工作要做它没有任何有意义的益处这种方式。

.detach()当保存并重新插入同一对象早在DOM更高版本)的工作,但它更多的工作比.hide().show()并在所有诚实,我相当怀疑你会发现一个差异这两个选项之间。



Answer 2:

3将触发渲染和重绘,因此,如果性能是您的关心,去.hide(),因为它会“备用”一些DOM操作(和潜在的2重绘)。 不要忘记你的图表上听众了。

然而,我发现,forperformance .addClass('hidden').removeClass('hidden')用CSS规则( .hidden {display: none} )效果最好。 (只要你不是在滚动hidding)。



文章来源: jQuery detach() v/s remove() v/s hide() [closed]