I have a jQuery script that shows an animated counter on page, but the script starts on page load, and I need it to be loaded when the user scrolls down to a specific <div>.
<script>
         $({countNum: $('#counter').text()}).animate({countNum: 63  }, {
          duration: 3000,
          easing:'linear',
          step: function() {
            $('#counter').text(Math.floor(this.countNum));
          },
          complete: function() {
            $('#counter').text(this.countNum);
          }
        });
</script>
This script need to be executed when I scroll to this specific <div> on a page.
<div id="counter"></div>
                Working Demo: http://jsfiddle.net/fedmich/P69sL/
Try this, add your code on the start_count... then make sure to add a boolean to run your code only once.
$(function() {
    var oTop = $('#counter').offset().top - window.innerHeight;
    $(window).scroll(function(){
        var pTop = $('body').scrollTop();
        console.log( pTop + ' - ' + oTop );   //just for your debugging
        if( pTop > oTop ){
            start_count();
        }
    });
});
function start_count(){
    alert('start_count');
    //Add your code here
}
                        Try this:
var eventFired = false,
    objectPositionTop = $('#counter').offset().top;
$(window).on('scroll', function() {
 var currentPosition = $(document).scrollTop();
 if (currentPosition > objectPositionTop && eventFired === false) {
   eventFired = true;
   // your code
 }
});
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With