2011-01-09 3 views
1

나는 플러그인을 작성하고 뭔가 문제가있어 오전 : 경우에jquery 플러그인에서 동적으로 생성 된 요소에 이벤트를 리바 인딩하는 방법은 무엇입니까?

:

<ul id='ulist'> 
    <li>list 1</li> 
    <li>list 2</li> 
    <li>list 3</li> 
</ul> 

다음 리 : 나는대로 .such로드 아약스에 의해 생성되지 않은리스트의 목록을

을 로드했을 때호버 이벤트으로 묶었습니다. 같은 :

$('ul').bind('hover',function(){}); 

하지만 내 플러그인 로드했던 UL [ID = 'ulist'의사에요 호버를하지 않았다 새로운 리튬 에 새로운 리 항목을 추가 동적으로 기능했다 로 .Such 바인딩 이벤트 :

addNewLi : function(){ 
    $('<li />').html('item N').appendTo('#ulist'); 
} 

그래서, 나는 새로운 동적 '라이브'에 의해 요소를 만든 바인딩해야 알았지 만 넣어 또는 다른 방법이 어디 나도 몰라 ... .

대단히 감사합니다 !!

답변

1

hover의 기능을 live 또는 delegate에 사용할 수 없습니다. 이 기능은 jQuery 1.5에 대한 계획이라고 생각합니다.

그러나 실제로 은 두 이벤트 mouseentermouseleave에 대한 바로 가기이므로 실제로 이러한 이벤트를 사용하여 기능을 모방하는 것은 매우 쉽습니다. delegate를 사용

예 :

$('#ulist').delegate('li', 'mouseenter', function() { 
    // code for mouseenter 
}).delegate('li', 'mouseleave', function() { 
    // code for mouseleave 
}); 
+0

당신은 라이브/대표와'hover''을 사용할 수 있지만 그냥 2 개 기능을 전달할 수 없습니다. 대신 이벤트 유형을 테스트해야합니다. 여전히 위임 솔루션에서 +1합니다. – user113716

+0

@patrick dw이 답변을 반영하기 위해 내 대답을 분명히했습니다. 감사합니다. – lonesomeday

+0

나를 위해 잘 작동! 고마워요! 당신은 저에게 플러그인을 코딩하는 또 다른 방법을주었습니다 !! – qinHaiXiang

관련 문제