2015-10-07 6 views
5

後、私は2つのイベント無効にその実行

ファーストを持っています。しかし、私は2回目のイベントをする必要があります。

答えて

5

あなたが最初のイベントにevent namespaceを追加し、あなたが好きな場所、名前空間でそれを無効にすることができます

$(window).on("scroll.once", function() { 
    ... 
    $(window).off("scroll.once"); 
+0

($(this).scrollTop()+h) >= $(".services-procent-ul").offset().top戻り、最高1回circleを呼び出すために$.Callbacks("once")を使用してみてくださいに答えとしてあなたはEvent Namespaceを追加することができ、それらのすべてを無効にしないための方法のためのグラムどうもありがとうございました! –

+2

誰かが私に彼のdownvoteを説明することはできますか? – antyrat

2

あなたはあなたが使用することができ、その実行後に「無効」イベントにしたい場合にjqueryの.one()

.one()メソッドは、あなたが見ているのされている場合、ハンドラは、その最初の呼び出し

$(window).one("scroll", function() { 
    //doSomething 
}); 

後、未結合であることを除いて、)(.onと同じです一定の条件の後に、特定のイベントコールバックを無効にし@antyratが

+0

私はそれがその場合スクロール開始後に停止すると思います。しかし、OPは、それが特定の条件に当たったときにのみそれを止めたいと思っています – antyrat

+0

@antyratはい、あなたは正しいですが、OPの質問はそれについてはっきりしていない、彼は具体的には実行後に無効にする必要があります – ecarrizo

2

条件ならば

var callbacks = $.Callbacks("once"); 

    callbacks.add(circle); 

    var scroller = function() { 
      if ($(window).scrollTop() > 0) { 
      $('.nav2').fadeIn('slow'); 
      $('.nav1').fadeOut('fast'); 
      } else { 
      $('.nav2').fadeOut('fast'); 
      $('.nav1').fadeIn('slow'); 
      } 
     } 

    $(window).on("scroll", function() { 
     if (($(this).scrollTop()+h) >= $(".services-procent-ul").offset().top) { 
      callbacks.fire() 
     } 
     scroller() 

    }); 
+0

ウィンドウスクロールイベントの開始直後に停止しないことは確実ですか?たとえば、 '$(this).scrollTop()'が0から1になり、条件が実行されない場合、すべてが破損します。 – antyrat

+0

@antyrat更新された投稿を参照してください。 – guest271314

+0

はまだ間違った動作をしています。 'は実行されません。 – antyrat

関連する問題