2016-12-14 4 views
0

Kann jemand dieses Skript reparieren, sodass es ausgeführt wird, wenn das Element in der Ansicht ist. Mit anderen Worten, es muss warten, bis es sichtbar zu laufen ist. Vielen Dank! -DanAusführen eines Skripts, wenn das Element angezeigt wird

$('.amount-chart').each(function(){ 
var $chart = $(this), 
    size = parseFloat($chart.outerWidth()), 
    clearSet; 

$chart.css({ 
    height: size 
}) 
.easyPieChart({ 
    size: size, 
    animate: 2000, 
      onStep: function(from, to, currentValue) { 
       $(this.el).find('span.amount-counter').text(Math.round(currentValue)); 
      } 
}); 

$(window).on('resize', function(){ 

    size = parseFloat($chart.outerWidth()); 

    $chart.css({ 
     height: size 
    }); 

    //clearTimeout(clearSet); 
    //clearSet = setTimeout(function(){ 
     $chart.removeData('easyPieChart').find('canvas').remove(); 
     $chart.easyPieChart({ 
     size: size, 
     animate: 1 
     }); 
    //}, 100); 
});  

});

+0

Legen Sie es auf playcode.io. Wo ist dein Element nicht sichtbar? –

+0

Hallo Alex, ich habe die playcode.io zu arbeiten ... http://true.playcode.io ... http://playcode.io/true – user2636033

+0

Meine Antwort lösen Sie Ihr Problem? –

Antwort

1

Vielen Dank für die vollständige Beschreibung! Blick auf demo

HTML

<div id="el">Pie Chart</div>  

JavaScript

var inited = false 
function init() { 
    // init your chart 
    // code here run once on element with id="el" will in viewport 
} 

$(window).on('scroll', function() { 
    if (inited) { 
    return 
    } 

    if (el.offsetTop >= window.innerHeight + document.body.scrollTop) { 
    inited = true 
    init() 
    } 
}) 
+1

Danke Alex. Du bist der Mann! – user2636033

+0

Bitte markieren Sie die Antwort als richtig, wenn sie wahr ist. –

Verwandte Themen