카테고리 없음

[jquery] jQuery 함수를 한 번만 실행 (이벤트 발생시 무한 루프 대신)

행복을전해요 2021. 1. 27. 06:34

여기 있습니다 :

http://jsfiddle.net/hamoom/qX6bn/

$(function(){

var alerted = false; 

$(window).scroll(function(){
var aTop = $('.ad').height();

if($(this).scrollTop()>=aTop && !alerted){
    alerted = true;
        alert('header just passed.');
        } 
        else if($(this).scrollTop()<=aTop && alerted){
            alerted = false;
            }
            });
            });
            

나는 그 경고를 계속해서 발생시키지 않도록 플래그를 사용합니다. "else"블록에서 재설정하여 위로 스크롤하면 동일한 경고를 다시받을 수 있습니다.

-------------------
$(function(){
  var alerted = false; 
  
    $(window).scroll(function(){
        var aTop = $('.ad').height();
        
            if($(this).scrollTop()>=aTop && !alerted){
                    alerted = true;
                            alert('header just passed.');
                                }
                                  });
                                  });
                                  
-------------------

다음 onoff 같이 사용해야합니다 .

$(window).on('scroll.foo', function(){
    // stop this once and for all!
        if( something == true )
               $(window).off('scroll.foo');
               });
               

위에 표시된 것처럼 이벤트를 바인딩 할 때 범위를 사용해야하므로 나중에 동일한 개체 ( 이 경우 window 개체 )에 바인딩 될 수도있는 정확한 이벤트에 손상을주지 않고 바인딩을 해제 할 수 있습니다 .

특정 조건이 충족되면 리스너가 존재하지 않으므로 콜백이 실행되지 않습니다.



출처
https://stackoverflow.com/questions/22029814