복붙노트

[JQUERY] 이벤트 핸들러 jQuery를 요소에 결합되는 경우 시험 [중복]

JQUERY

이벤트 핸들러 jQuery를 요소에 결합되는 경우 시험 [중복]

해결법


  1. 1.당신은 데이터 캐시에서이 정보를 얻을 수 있습니다.

    당신은 데이터 캐시에서이 정보를 얻을 수 있습니다.

    예를 들어, 콘솔 (방화범, IE8)에 로그 :

    console.dir( $('#someElementId').data('events') );
    

    또는를 반복 :

    jQuery.each($('#someElementId').data('events'), function(i, event){
    
        jQuery.each(event, function(i, handler){
    
            console.log( handler.toString() );
    
        });
    
    });
    

    또 다른 방법은 다음과 같은 북마크를 사용할 수 있지만 분명히이 런타임에 도움이되지 않는 것입니다.


  2. 2.아직 존재하지 않는 경우 바인딩 죽이고하는 것은 최선의 해결책이지만 충분한 효과가 보인다! 두 번째로 당신은 당신이 결합 중복을 생성하지 않습니다 확실하게 알 수있는 '클릭'.

    아직 존재하지 않는 경우 바인딩 죽이고하는 것은 최선의 해결책이지만 충분한 효과가 보인다! 두 번째로 당신은 당신이 결합 중복을 생성하지 않습니다 확실하게 알 수있는 '클릭'.

    그래서 저는 다음과 같이) ((다이) 또는 바인딩 해제 사용

    $("#someid").die("click").live("click",function(){...
    

    또는

    $("#someid").unbind("click").bind("click",function(){...
    

    또는 최근의 jQuery 버전 :

    $("#someid").off("click").on("click",function(){...
    

  3. 3.나는 정확히 수행 hasEventListener라는 플러그인을 썼다 :

    나는 정확히 수행 hasEventListener라는 플러그인을 썼다 :

    http://github.com/sebastien-p/jquery.hasEventListener

    도움이 되었기를 바랍니다.


  4. 4.이 솔루션은 더 이상 우리가 여기 블로그에서 읽을 수있는 jQuery를 1.8부터 지원되지 않습니다 :

    이 솔루션은 더 이상 우리가 여기 블로그에서 읽을 수있는 jQuery를 1.8부터 지원되지 않습니다 :

    그래서, 당신은 / 언 바인딩을 바인딩하거나, 결정하는 부울을 사용해야하는 경우 (제 생각 최적의 솔루션에) 부착 또는되었는지 등의 이벤트.


  5. 5.나는이 jQuery를 1.9으로 업데이트 한 것 같아요. *

    나는이 jQuery를 1.9으로 업데이트 한 것 같아요. *

    나는이 순간에 나를 위해 작동 유일한 것입니다 찾는거야 :

    $._data($("#yourElementID")[0]).events
    

  6. 6.나는 그렇게하는 "한 번"이라는 아주 작은 플러그인을 썼다 :

    나는 그렇게하는 "한 번"이라는 아주 작은 플러그인을 썼다 :

    $.fn.once = function(a, b) {
        return this.each(function() {
            $(this).off(a).on(a,b);
        });
    };
    

    그리고 단순히 :

    $(element).once('click', function(){
    });
    

  7. 7.jQuery를 들어 1.9+

    jQuery를 들어 1.9+

    var eventListeners = $._data($('.classname')[0], "events");
    

    I는 [0] 배열 리터럴을 필요로했다.


  8. 8.나는 hasEventListener는 예를 들어, 사용자 정의 이벤트를 처리 할 언급 한 플러그인이 생각하지 않습니다

    나는 hasEventListener는 예를 들어, 사용자 정의 이벤트를 처리 할 언급 한 플러그인이 생각하지 않습니다

    var obj = {id:'test'};
    $(obj).bind('custom', function(){
        alert('custom');
    }).trigger('custom');
    
    alert($(obj).hasEventListener('custom'));
    

    또한, jQuery를 1.5 적어도 난 당신이 위의 물체에 바인딩 된 이벤트에 대해 다르게 반환하기 때문에 $ (대상) .DATA ( '이벤트')를 사용하여주의해야합니다 생각합니다.

    당신은 같은 것을 할 필요가 :

    var events = $(target).data("events");
    if(typeof events === "function"){
       events = events.events;
    }
    

    나는 접근의이 종류를 사용하고 그것은 작동하지만 정말 내가 그 일을하지 않아야한다는 나는 JQuery와 내부의 자비입니다처럼 조금 느낌!


  9. 9.나도 같은 요구를했다 및 신속 같은 것을 할 수 있도록 기존의 코드를 패치 :

    나도 같은 요구를했다 및 신속 같은 것을 할 수 있도록 기존의 코드를 패치 :

     if( $('.scroll').hasHandlers('mouseout') )  // could be click, or '*'...
     { 
       ... code ..
     }
    

    너무 이벤트 위임을 위해 작동합니다 :

     if ( $('#main').hasHandlers('click','.simple-search') )  ...
    

    그것은 여기에 있습니다 : JQuery와 핸들러 - toolkit.js


  10. 10.SJG의 대답을 참조하고 W3Schools.com에서

    SJG의 대답을 참조하고 W3Schools.com에서

    이것은 제공합니다 :

    $("#someid").off("click").live("click",function(){...
    

    또는

    $("#someid").off("click").bind("click",function(){...
    

  11. 11.이것은 나를 위해 작동합니다 : $ ( '#의 profile1'). ATTR ( '온 클릭')

    이것은 나를 위해 작동합니다 : $ ( '#의 profile1'). ATTR ( '온 클릭')

  12. from https://stackoverflow.com/questions/1236067/test-if-event-handler-is-bound-to-an-element-in-jquery by cc-by-sa and MIT license