2017-08-08 11 views
1

数値を指定値までカウントしてそこにとどめたいが、ページが一定の高さ以下でスクロールされるたびに呼び出されるため、 1に戻ります。jQuery - 特定のスクロール位置の後にスクロールイベントコールバックを停止/キャンセルする

解決策は、ページが特定の高さ以下にスクロールされたときに関数を1回だけ呼び出させることです。

アイブ氏は.one()方法いくつかの場所を置くことを試みたが、それは

http://jsfiddle.net/d7vKd/1543/

$(document).on('scroll', function() { 
    if ($(this).scrollTop() >= $("#mydiv").position().top) { 
    window.randomize = function() { 
     $('.radial-progress1').attr('data-progress', Math.floor(94)); 
    }; 
    $('.count').each(function() { 
     $(this).prop('Counter', 0).animate({ 
     Counter: $(this).text() 
     }, { 
     duration: 6000, 
     easing: 'swing', 
     step: function(now) { 
      $(this).text(Math.ceil(now)); 
     } 
     }); 
    }); 
    setTimeout(window.randomize, 200); 
    } 
}) 
+0

をトリガが満たされたときに '$(document).off(" scroll ")'を考えましたか? –

+0

私のウェブサイト上のスクロール機能に別のものがあるので、一度関数を呼び出すことに関して[my answer](https://stackoverflow.com/a/23685237/104380)を参照してください – vsync

+0

$(document).off( "scroll")競合(ヘッダーナビゲーションの非表示/表示)。あなたは別の解決策を知っていますか – Vegapunk

答えて

1

を助けていないコールバックはその要求を満たしていたらあなたのscrollイベントをunbind必要があります。

$(document).on('scroll.someName', function(){ 
    var isPassedPos = $(this).scrollTop() >= $("#mydiv").position().top; 

    if(isPassedPos){ 
    $(document).off('scroll.someName') // <-------------- remove the event listener 

    window.randomize = function() { 
     $('.radial-progress1').attr('data-progress', Math.floor(94)); 
    }; 

    $('.count').each(function() { 
     $(this).prop('Counter', 0).animate({ 
     Counter: $(this).text() 
     }, { 
     duration: 6000, 
     easing: 'swing', 
     step: function(now) { 
      $(this).text(Math.ceil(now)); 
     } 
     }); 
    }); 

    setTimeout(window.randomize, 200); 
    } 
}) 
+0

私は何か新しいことを学んでくれてありがとう! – Vegapunk

+0

ああ、いいえ、その解決策は別の問題を作成しました、あなたのソリューションは何とか分離することができますか?私は別の$(document).scroll(function(){私のウェブサイト上では今壊れてしまう:) – Vegapunk

+0

$(document).scroll(function(){ if($(this).scrollTop()> 400) removeClass( "wtbck"): $( "#topnav")。removeClass( "wtbck")。addClass( 'transpb');$( "#topnav")。 ; } }); – Vegapunk

関連する問題