我用我的网页highcharts。 这有点沉重。
当用户点击一个按钮,它动态加载highcharts并且当用户点击close
按钮,它删除/隐藏图表。
我想知道哪一个会是更好的选择。
隐藏图表时用户点击? 它会减慢页面的其余部分(如处理器一起重的JavaScript存在?),或者,
remove()
所以它使页面更轻(但在这里,当用户点击按钮再次,我需要重新加载图表),或者,
使用detach()
所以比上重装highcharts,它的工作速度更快remove()
但它不会使页面更重jQuery的处理程序是目前所有的时间?)
我从jQuery文档知道,
。去掉()
在卸下摆臂()方法取出DOM的元素。 当你想删除它里面的元素本身,以及一切用一个.remove()。 除了元素本身,与所述元素相关联的所有绑定事件和jQuery数据被除去。
。分离()
所述.detach()方法是一样的一个.remove(),不同之处在于.detach()保持与移除的元件相关联的所有的jQuery的数据。 当移除的元件是在稍后的时间被重新插入到DOM此方法非常有用。
。隐藏()
匹配的元素将被立即隐藏,没有动画。 这大致相当于调用的CSS(“显示”,“无”)
如果你只是想隐藏/显示的对象,不时,然后使用jQuery .hide()
和.show()
这是最简单,只要你要保持对象周围反正,你可能也只是使用.hide()
和.show()
除非对象消耗大量内存,它不应该是一个问题。
.remove()
当保存并重新插入同一对象早在DOM更高版本)将没有多大用处给你,因为它破坏了一些与对象相关的数据的,所以你可能不能够很容易地重新插入它在页。
.remove()
你居然让以前的对象得到由垃圾回收销毁,那么你从头需要的时候又是最内存高效运行重建它,但除非它需要消耗大量的内存,或者你有很多他们(如千),它可能只是更多的工作要做它没有任何有意义的益处这种方式。
.detach()
当保存并重新插入同一对象早在DOM更高版本)的工作,但它更多的工作比.hide()
和.show()
并在所有诚实,我相当怀疑你会发现一个差异这两个选项之间。
3将触发渲染和重绘,因此,如果性能是您的关心,去.hide(),因为它会“备用”一些DOM操作(和潜在的2重绘)。 不要忘记你的图表上听众了。
然而,我发现,forperformance .addClass('hidden')
和.removeClass('hidden')
用CSS规则( .hidden {display: none}
)效果最好。 (只要你不是在滚动hidding)。