Jas*_*ant 12 javascript jquery highcharts
我在我的页面中使用高级图表.这有点沉重.
当用户单击按钮时,它会动态加载高图,当用户单击close按钮时,它会删除/隐藏图表.
我想知道哪一个会更好.
用户点击时隐藏图表?它是否会减慢页面的其余部分(因为重型javascript和处理程序一起存在?)或者,
remove() 它,这使页面更轻(但在这里,当用户再次点击按钮,我需要再次加载图表)或,
使用detach(),以便在重新加载highcharts时,它的工作速度比remove()(但不会因为jQuery处理程序一直存在而使页面变重?)
我从jQuery文档中知道,
.remove()方法从DOM中获取元素.如果要删除元素本身以及其中的所有内容,请使用.remove().除了元素本身之外,还删除了与元素关联的所有绑定事件和jQuery数据.
.detach()方法与.remove()相同,除了.detach()保留与删除的元素关联的所有jQuery数据.当删除的元素稍后要重新插入DOM时,此方法很有用.
匹配的元素将立即隐藏,没有动画.这大致相当于调用.css('display','none')
如果你只是想不时隐藏/显示一个对象,那么使用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})效果最好.(只要你没有隐藏滚动).