可以使用布尔标志:
let isRendered = false;
if (!isRendered && $('#myChart').isFullyVisible()) {
chart = new Chart(ctx, config);
chart.render();
isRendered = !isRendered;
}
if (isRendered && $('#myChart').isOutOfView()) {
chart.destroy();
chart = null;
isRendered = !isRendered;
}
或者你可以检查一下
chart
存在:
let chart = null;
if (!chart && $('#myChart').isFullyVisible()) {
chart = new Chart(ctx, config);
chart.render();
}
if (chart && $('#myChart').isOutOfView()) {
chart.destroy();
chart = null;
}
所有的测试只有在需要的时候才会启动昂贵的可见性测试。
作为补充说明,最好缓存选择器,这样就不需要在每次滚动/调整大小事件中重新查询它们:
const chartCanvas = $('#chart');
$(window).on('resize scroll', functionâ® {
if (chartCanvas.fullyVisible()) {}
});