2010-11-23 7 views
3

마우스 오버 기능을위한 두 개의 핸들러가 있는데, 차이점과 가능한 가장 효율적인 방법으로 각각을 사용하는 방법을 알고 싶습니다.델리게이트는 어떻게 유용합니까?

코드 블록 하나를

$('.test div').mouseover(function() { 
        $(this).stop().animate({ 
         left: '100px' 
        }, 550); 
}); 

코드 블록이 : 사전에

$('.test').delegate('div', 'mouseover', function() { 
        $(this).stop().animate({ 
         left: '100px' 
        }, 550); 
       }); 

감사합니다 :)

+0

아 ....을 만들어 적용 핸들러에 충실해야하므로 성능의 비용이, 당신은 내가 인형이라고 생각합니다. 고마워요 .-P –

+0

@Klaus, 그는 분명히 * ME *와 이야기하고있었습니다 .. – nickf

+0

@nickf, 당신은 운 좋은 놈입니다 :-) –

답변

3

.delegate() 오히려 각 .test div 경기보다 .test 요소 당 하나mouseover 이벤트 핸들러를 연결합니다, 당신은에 .delegate()라고 그 .test 요소 내부에 추가 미래 <div> 요소에 대해 작동합니다.

개의 요소가 각 .test 안에없고 동적으로 변경되지 않는 경우 (예 : AJAX를 통해 추가) 직접 바인딩 할 수 있습니다. 동적으로 변경하는 경우 나 많이 사용하는 경우에는 시작 비용이 보다 많고 저렴하고 거품/선택기 비용이 매우 적기 때문에 .delegate()을 사용하십시오. 모든 문서에의

0

이 대표는 첨부 하나 개 이상의 이벤트 0 선택자와 현재 또는 향후 일치하는 모든 요소에 대해을 입력하고 특정 루트 요소 집합에 을 기반으로합니다.

은 당신이 Event.target을 수정할 수 있다는 것입니다 제가 위임에 대해 알고에서 jQuery API

0

에서 촬영. 그러면 요소가 클릭되었다고 가정 해 봅시다. DIV를 다시 타겟팅 할 수 있습니다.

2

: 모든 http://api.jquery.com/delegate/

먼저, 위임은 미래에서 만든 개체에 적용된다는 의미에서 "라이브"와 유사하다. 그래서 당신은 실제로 그것을 비교해야한다 :


    $('.test div').live('mouseover', function() { 
         $(this).stop().animate({ 
          left: '100px' 
         }, 550); 

이제 차이가 대표로,이 명령이 호출 된 후 생성 된 사업부를 신청하는 것입니다,하지만 .test에 대한 후 생성되지 않습니다. 당신이 사용 $ (

에서 라이브를 사용하는 경우 라이브() 또는 위임() 당신이 필요하지 않은 경우에만 이미 요소.

관련 문제