복붙노트

[JQUERY] 대표 VS 라이브 jQuery를 () () [중복]

JQUERY

대표 VS 라이브 jQuery를 () () [중복]

해결법


  1. 1.나는 라이브 사용하지 않습니다; 나는 압도 할 정도로 상당한 것으로 대리자를 사용할 때의 이점을 고려한다.

    나는 라이브 사용하지 않습니다; 나는 압도 할 정도로 상당한 것으로 대리자를 사용할 때의 이점을 고려한다.

    라이브의 하나의 장점은 문법이 매우 가까운 바인드의 그것 때문이다 :

    $('a.myClass').live('click', function() { ... });
    

    대표는 그러나, 구문 자세한 조금 더를 사용합니다 :

    $('#containerElement').delegate('a.myClass', 'click', function() { ... });
    

    이것은, 그러나, 실제로 무슨 일이 일어나고 있는지에 대해 훨씬 더 명시 적으로 나에게 보인다. 당신은 이벤트가 실제로 문서에 포착되고 있음을 라이브 예에서 인식하지 않는다; 위임과 함께, 이벤트 캡처가 #containerElement에 일어나는 것이 분명하다. 당신은 라이브와 같은 일을 할 수 있지만 구문은 점점 더 무시 무시한된다.

    귀하의 이벤트도 캡처 성능을 향상 할 수 할 수있는 컨텍스트를 지정. 라이브 예로, 전체 문서의 모든 번의 클릭은 일치하는지 확인하기 위해 선택 a.myClass과 비교되어야한다. 대리자 즉 #containerElement에서만 요소이다. 이것은 분명히 성능이 향상됩니다.

    마지막으로, 라이브 a.myClass에 대한 브라우저 외모가 현재 존재하는지 여부를해야합니다. 추가 성능 이점을주는 이벤트가 트리거되는 요소 만 모습을 위임합니다.

    당신이 대리인으로 할 수있는 라이브와 함께 당신은 아무것도 할 수 있도록 NB 위임의 사용은, 뒤에서 살고 있습니다. 그들은 일반적으로 사용되는로 내 대답은 그들과 함께 다루고있다.

    도 라이브도 대리인이 현대 jQuery를에 이벤트 위임을 할 수있는 최선의 방법임을 유의하십시오. (jQuery를 1.7와 같은) 새로운 구문에 대한 함수이다. 구문은 다음과 같습니다 :

    $('#containerElement').on('click', 'a.myClass', function() { ... });
    

  2. 2.그들은 정확히 제외하고는 동일합니다 :

    그들은 정확히 제외하고는 동일합니다 :

    당신이) (.delegate를 호출 할 때, 그냥 돌아 서서 전화는 (.live)하지만, 추가 컨텍스트 매개 변수를 전달합니다.

    https://github.com/jquery/jquery/blob/master/src/event.js#L948-950

    따라서, 난 항상 .delegate 사용하십시오 (). 이 페이지의 모든 이벤트를 처리 할 당신이 정말로 필요하면, 바로 컨텍스트로에게 몸을 제공합니다.

    $(document.body).delegate('.someClass', 'click', function() {
        // run handler
    });
    

    jQuery를 이전 버전은 실제로 위임 기능을 사용할 수 있습니다. 당신은 .live 호출 할 때) (컨텍스트 속성으로 선택기 또는 요소를 통과해야합니다. 물론,이 페이지에로드 될 필요가있다.

    $('.someClass', '#someContainer').live('click',function() {
        // run handler
    });
    

    그리고 당신은 .delegate로 () 같은 동작을합니다.


  3. 3.두 가지 상황이 마음에 와서 :

    두 가지 상황이 마음에 와서 :


  4. 4.이 예제를 고려

    이 예제를 고려

    <ul id="items">  
       <li> Click Me </li>  
    </ul>
    
    $('#items').delegate('li', 'click', function() {  
        $(this).parent().append('<li>New Element</li>');  
    });
    

    우리의 선택의 맥락으로 DOM 요소를 전달함으로써, 우리는 라이브 () 행동하라 (거의) 위임 ()가 수행하는 것과 같은 방법을 만들 수 있습니다. 기본 컨텍스트입니다 - 그것은 문맥이 아닌 문서에 핸들러를 연결합니다. 아래의 코드는 위와 대리자 () 버전과 동일하다.

    $("li", $("#items")[0]).live("click", function() {  
        $(this).parent().append("<li>New Element</li>");  
    }); 
    

    자원

    더 나은 성능 여기를 참조하십시오, 당신은보다 효율적으로 사용 대리자를 거라고

  5. from https://stackoverflow.com/questions/4579117/jquery-live-vs-delegate by cc-by-sa and MIT license